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

vba excel-vba excel

566 观看

3回复

796 作者的声誉

以下是脚本的一部分,用于将数据从工作表复制RawImportPullData。我必须从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行插入数据?

作者: acr 的来源 发布者: 2017 年 9 月 15 日

回应 3


0

564 作者的声誉

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

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

这将从工作表“ A2”开始复制工作表中从第8行到第lrath的所有行PullData,就像您使用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在这种情况下,您要在源工作表中选择的列在哪里。

作者: Noldor130884 发布者: 2017 年 9 月 15 日

0

463 作者的声誉

决定

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

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

希望能有所帮助。

作者: adhy wijaya 发布者: 2017 年 9 月 15 日

0

21806 作者的声誉

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

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,并ERawImportDPullData

作者: Michał Turczyn 发布者: 2017 年 9 月 15 日
32x32