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

标签 excel vba range

我搜索过这个,但没有运气。如有任何帮助,我们将不胜感激。

数据集

我有一个相当高的数据集(大约在 1,000 到 5,000 行之间),有两列;一个用于类别,另一个用于值。数据各不相同;可能有 10 个类别,也许有 100 个,或任何其他数量:

<表类=“s-表”> <标题> A 列 B 列 <正文> 类别 1 值 1 类别 1 值 2 类别 1 值 3 类别 2 值 4 类别 2 值 5 类别 2 值 6 类别 3 值 7 类别 3 值 8 类别 3 值 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/

相关文章:

excel - 如何使用 VBA 检测不适合 Excel 单元格的值?

mysql - 这个 =COUNTIF(Data!B :B, Data!B :B &"") Excel Formula? 的功能是什么

vba - 按类型过滤电子邮件附件文件

elasticsearch - 是否可以在ElasticSearch中使用字母范围使用范围聚合?

python - 遍历字符串之间的范围

python - 基于两个 pandas 列创建一系列浮点值

vba - 上周一的日期 Excel

C++ ExportAsFixedFormat 保存为 PDF

vba - Excel VBA 获取特定单元格的超链接地址

用于积分负指数的 VBA 代码