Excel宏 - 忽略列标题?

时间:2011-07-20 15:20:55

标签: excel sorting header

我有一个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?

这是我的第一个宏,因此它们是非常基本的问题。

提前致谢

1 个答案:

答案 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而不是查找上次使用的行。