Excel VBA - 使用变量的列数

时间:2015-03-02 15:49:58

标签: vba loops excel-vba count variants

我搜索了论坛,但我真的很难让我的代码部分工作。基本上,我们的想法是搜索工作表1并根据条件将一个或多个列复制到特定工作表。 即如果表1第1列和第3列包含"复制01"然后将两列复制到工作表2,如果工作表1列2和4包含"复制02"然后将两列复制到工作表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)

谢谢, 斯图尔特

1 个答案:

答案 0 :(得分:1)

你想要这个:

e = range("A1:" & split(cells(1,cells(1,columns.Count).end(xlToLeft).column).address(true,false), "$")(0) & "1").Address

单元格(1,columns.count).end(xlToLeft).column)获取最后一个列号(例如,“M”为13)。

将其放入单元格(1,lastcolNum)中会获得一个表示此列第一行中单元格的单元格(例如Cell M1)。

地址(true,false)方法获取行前的美元符号但不是列字母前的单元格引用(例如“M $ 1”

split函数返回一个数组,该数组用“$”字符分割输入字符串(例如数组 - (“M”,“1”)

(0)返回返回数组中的第0个元素(例如“M”) 然后将其放入范围函数中将返回范围(例如)“A1:M1”

我不完全确定你在这里尝试使用UBound功能。制作

会更有意义
e = cells(1,columns.count).end(xlToLeft).column

然后循环

For N = 1 To e

因为这会遍历每一列。