簡體   English   中英

使用excel VBA計算特定行號的行數

[英]Count number of rows from a specific row number using excel VBA

以下是腳本的一部分,用於將數據從表單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行插入數據?

這是因為您沒有指定范圍的起點 由於您必須復制所有行,(我假設您可以復制粘貼所有內容,而不僅僅是值),只需使用以下命令:

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

這將復制PullData工作表中從第8行到第lra行的所有行,從范圍“ 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是您要在源工作表中選擇的列。

您是否嘗試過這樣的代碼:

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

希望能有所幫助。

您的范圍有所不同,請嘗試從左側的lrA減去6 將更改應用於復制數據的所有行:

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

您將列DERawImportPullData D中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM