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

因为这将遍历每一列。