Excel VBA - 使用变体的列数
Excel VBA - Column count using variants
我搜索了论坛,但我真的很难让我的部分代码正常工作。基本上,想法是搜索 sheet 1 并根据条件将一个或多个列复制到特定作品sheet。
即如果 sheet 1 第 1 列和第 3 列包含 "copy 01" 然后将两列复制到 sheet 2 如果 sheet 1 第 2 列和第 4 列包含 "copy 02" 然后复制两列都为 sheet 3 等
我可以使用代码很好地计算行数,但不能计算列数。似乎与不确定列范围有关,但我不知道要解决这个问题!任何帮助将不胜感激。
'Row
Dim NR As Long
Dim d As Variant
d = ws1.Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
For NR = 1 To UBound(d, 1)
'column
Dim NC As Long
Dim e As Variant
e = ws1.Range(Cells(1, Columns.Count).End(xlToLeft).Column).Value
For NC = 1 To UBound(e, 1)
谢谢,
斯图尔特
你想要这个:
e = range("A1:" & split(cells(1,cells(1,columns.Count).end(xlToLeft).column).address(true,false), "$")(0) & "1").Address
cells(1, columns.count).end(xlToLeft).column) 获取最后一列编号(例如 'M' 为 13)。
将其放入 cells(1, lastcolNum) 得到一个单元格,该单元格表示该列第一行中的单元格(例如单元格 M1)。
address(true, false) 方法获取行前但列字母前没有美元符号的单元格引用(例如 "M"
拆分函数 returns 一个数组,它按“$”字符拆分输入字符串(例如数组 - ("M","1")
(0) returns返回数组中的第0个元素(例如"M")
然后将其放入范围函数returns范围(例如)"A1:M1"
我不完全确定你想用这里的 UBound 函数做什么。使
更有意义
e = cells(1,columns.count).end(xlToLeft).column
然后循环
For N = 1 To e
因为这将遍历每一列。
我搜索了论坛,但我真的很难让我的部分代码正常工作。基本上,想法是搜索 sheet 1 并根据条件将一个或多个列复制到特定作品sheet。 即如果 sheet 1 第 1 列和第 3 列包含 "copy 01" 然后将两列复制到 sheet 2 如果 sheet 1 第 2 列和第 4 列包含 "copy 02" 然后复制两列都为 sheet 3 等
我可以使用代码很好地计算行数,但不能计算列数。似乎与不确定列范围有关,但我不知道要解决这个问题!任何帮助将不胜感激。
'Row
Dim NR As Long
Dim d As Variant
d = ws1.Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
For NR = 1 To UBound(d, 1)
'column
Dim NC As Long
Dim e As Variant
e = ws1.Range(Cells(1, Columns.Count).End(xlToLeft).Column).Value
For NC = 1 To UBound(e, 1)
谢谢, 斯图尔特
你想要这个:
e = range("A1:" & split(cells(1,cells(1,columns.Count).end(xlToLeft).column).address(true,false), "$")(0) & "1").Address
cells(1, columns.count).end(xlToLeft).column) 获取最后一列编号(例如 'M' 为 13)。
将其放入 cells(1, lastcolNum) 得到一个单元格,该单元格表示该列第一行中的单元格(例如单元格 M1)。
address(true, false) 方法获取行前但列字母前没有美元符号的单元格引用(例如 "M"
拆分函数 returns 一个数组,它按“$”字符拆分输入字符串(例如数组 - ("M","1")
(0) returns返回数组中的第0个元素(例如"M") 然后将其放入范围函数returns范围(例如)"A1:M1"
我不完全确定你想用这里的 UBound 函数做什么。使
更有意义e = cells(1,columns.count).end(xlToLeft).column
然后循环
For N = 1 To e
因为这将遍历每一列。