使用excel VBA计算特定行号的行数

时间:2017-09-15 05:47:20

标签: vba excel-vba excel

以下是我用于将数据从RawImport复制到PullData的脚本的一部分。我必须从PullData工作表复制某些单列的所有行,其中包含从第8行开始的数据。

Dim lrA As Integer

lrA = RawImport.Range("B" & Rows.Count).End(xlUp).Row

PullData.Range("A2:A" & lrA).Value = RawImport.Range("G8:G" & lrA).Value
PullData.Range("A2:A" & lrA).NumberFormat = "d mmm yyyy h:mm;@"
PullData.Range("A:A").Columns.AutoFit

PullData.Range("B2:B" & lrA).Value = RawImport.Range("E8:E" & lrA).Value
PullData.Range("C2:C" & lrA).Value = RawImport.Range("C8:C" & lrA).Value
PullData.Range("D2:D" & lrA).Value = RawImport.Range("D8:E" & lrA).Value
PullData.Range("E2:E" & lrA).Value = RawImport.Range("B8:B" & lrA).Value
PullData.Range("F2:F" & lrA).Value = RawImport.Range("F8:F" & lrA).Value

我在上面的代码中面临的问题是它包含前8行的数据。因此,脚本会在末尾的其余行中将某些值复制为N/A

我尝试编辑对行进行计数的行,如下所示:

 lrA = RawImport.Range("B" & Rows.Count).End(xlUp).Row - 7

但是这从包含数据的范围的底部删除了7行,而不是前7行。

如何从第8行插入数据?

3 个答案:

答案 0 :(得分:0)

这是因为您没有指定范围的起点。由于您必须复制所有行,(我假设您可以复制粘贴所有内容,而不仅仅是值),只需使用以下内容:

RawImport.Rows("8:" & lra).Copy Destination:=PullData.Range("A2")

这将复制lra工作表中从第8行到PullData的所有行,从范围“A2”开始,就像使用CTRL + C / CTRL + V进行复制粘贴一样

编辑:

好的,我认为我得到了你的想法(并相应地编辑了你的问题)。无论如何,你可以使用.Copy

RawImport.Range(Cells(8, x).Address(0, 0), Cells(lra, x).Address(0, 0)).Copy _
Destination:=PullData.Range("A2") 'or whatever range you need

其中x就是您要在源工作表中选择的列。

答案 1 :(得分:0)

您是否尝试过这样的代码:

Dim lrA As Integer

lrA = RawImport.Range("B" & Rows.Count).End(xlUp).Row

PullData.Range("A2:A" & lrA - 6).Value = RawImport.Range("G8:G" & lrA).Value
PullData.Range("A2:A" & lrA - 6).NumberFormat = "d mmm yyyy h:mm;@"
PullData.Range("A:A").Columns.AutoFit

PullData.Range("B2:B" & lrA - 6).Value = RawImport.Range("E8:E" & lrA).Value

PullData.Range("C2:C" & lrA - 6).Value = RawImport.Range("C8:C" & lrA).Value

PullData.Range("D2:D" & lrA - 6).Value = RawImport.Range("D8:E" & lrA).Value

PullData.Range("E2:E" & lrA - 6).Value = RawImport.Range("B8:B" & lrA).Value

PullData.Range("F2:F" & lrA - 6).Value = RawImport.Range("F8:F" & lrA).Value

希望得到这个帮助。

答案 2 :(得分:0)

您的范围不同,请尝试从左侧6减去lrA。将更改应用于复制数据的所有行:

PullData.Range("A2:A" & lrA - 6).Value = RawImport.Range("G8:G" & lrA).Value

另外,我认为这是不受欢迎的:

PullData.Range("D2:D" & lrA).Value = RawImport.Range("D8:E" & lrA).Value

您将D中的ERawImport列复制到D中的PullData