我有一个Excel宏如下:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim i&, j&, k&, LR_A&, LR_B&, LR_C&, count&
LR_A = Range("A" & Rows.count).End(xlUp).Row
LR_B = Range("B" & Rows.count).End(xlUp).Row
LR_C = Range("C" & Rows.count).End(xlUp).Row
count = 1
For i = 1 To LR_A
For j = 1 To LR_B
For k = 1 To LR_C
Range("D" & count).Value = Range("A" & i).Value
Range("E" & count).Value = Range("B" & j).Value
Range("F" & count).Value = Range("C" & k).Value
count = count + 1
Next k
Next j
Next i
Application.ScreenUpdating = True
End Sub
如您所见,它将A,B和C列中的数据用于D,E和F.
我需要添加哪些代码才能忽略A,B和C中的列标题?我四处搜寻但一直无法找到答案。
此外,我如何更改它以使其不是将数据转换为D,E和F,而是将其转换为另一个工作表上的A,B和C?
这是我的第一个宏,因此它们是非常基本的问题。
提前致谢
答案 0 :(得分:0)
回答您的问题
为避免复制标题,您应该在索引2
处开始循环
要将值复制到另一个Worksheet
,您需要在Range
。
For i = 2 To LR_A
For j = 2 To LR_B
For k = 2 To LR_C
Sheets("My other ws").Range("D" & count).Value = Range("A" & i).Value
Sheets("My other ws").Range("E" & count).Value = Range("B" & j).Value
Sheets("My other ws").Range("F" & count).Value = Range("C" & k).Value
count = count + 1
Next k
Next j
Next i
处理此案例可能是更好的方法
使用索引在范围内循环可能会非常慢 我建议你看一下这个链接:http://www.ozgrid.com/VBA/VBALoops.htm作者解释了更快的循环范围的方法。
一些提示
按照here所述,查看Excel SpecialCells
例如,在您的情况下,您可以尝试使用ActiveSheet.UsedRange
而不是查找上次使用的行。