gpt4 book ai didi

excel - 命名多个范围 - 在两列中使用数据

转载 作者:行者123 更新时间:2023-12-04 08:04:16 26 4
gpt4 key购买 nike

我没有运气就搜索了这个。任何帮助表示赞赏。
数据集
我有一个相当高的数据集(大约在 1,000 到 5,000 行之间),有两列;一个用于类别,另一个用于值。数据不同;可能有 10 个类别,可能有 100 个,或任何其他数字:


A栏
B栏


第一类
值 1

第一类
值(value) 2

第一类
值(value) 3

第 2 类
值(value) 4

第 2 类
值(value) 5

第 2 类
值(value) 6

第 3 类
值(value) 7

第 3 类
值(value) 8

第 3 类
值(value) 9

第 3 类
值 10


等等
客观的
我想根据 A 列中的值创建范围,该值仅包含 B 列中的值,使用 A 列的值作为范围的名称。
例如:

  • 范围名称 = “类别 1”;范围值 { 值 1,值 2,值 3}
  • 范围名称 = “类别 2”;范围值 { 值 4,值 5,值 6}
  • 范围名称 = “类别 3”;范围值 { 值 7,值 8,值 9,
    值 10}

  • 尝试的事情
    我已经尝试了很多事情,但我是一个 VBA 新手,以至于我不知道什么是解决此解决方案的有效方法,并且担心我在方法中不断做出错误的转变。
    我想也许尝试在 A 列中找到下一个不同的值与偏移函数配对可能是一个好主意,但除了简单地创建和命名要在 A 列中查看的类别范围之外,我没有什么更进一步的了。我我确定这不是必需的,但我绝对不是 VBA 专家。
    Sub AllCategories

    Dim sht As Worksheet
    Dim lrow As Long
    Dim r As Range

    Set sht = Sheets("Sheet1")
    lrow = sht.Cells(Rows.Count, "A").End(xlUp).Row
    Set r = sht.Range("A2:A" & lrow)

    ActiveWorkbook.Names.Add _
    Name:="AllCategories", _
    RefersTo:=r

    End Sub
    想法?
    似乎我需要类别的开始变量和结束变量,但我找不到如何查找下一个不同的值。也许一些循环的 Find 变量函数?
    感谢您的帮助,非常感谢。
    干杯,
    预言家

    最佳答案

    根据我的评论,我不确定您正在做的事情是否是最好的做事方式,并且由于命名变量的名称中不能有空格,如果您的类别实际上是单词和一些可能有空格,你设置了很多心痛处理异常。除此之外,如果它真的是你需要的,那么你离得并不远,但是你不能用一个变量来跟踪每个范围的开始和结束。下面的代码将满足您的要求:

    Sub name_ranges()
    Dim iRow As Integer
    Dim iStart As Integer
    Dim rang As Range

    iRow = 2
    iStart = 2

    With Worksheets("test")
    While .Cells(iRow, 1) <> ""
    iRow = iRow + 1
    If .Cells(iRow, 1) <> .Cells(iRow - 1, 1) Then
    Set rang = Intersect(Columns(2), Rows(iStart & ":" & iRow - 1))
    rang_name = Replace(.Cells(iRow - 1, 1), " ", "")
    ActiveWorkbook.Names.Add Name:=rang_name, RefersTo:="=test!" & rang.Address
    iStart = iRow
    End If
    Wend
    End With
    End Sub
    enter image description here

    关于excel - 命名多个范围 - 在两列中使用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66305544/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com