我對VBA非常新穎,大多數時候我通過簡單的陪審團來操縱別人的代碼來滿足我的需求 - 有時候我也會找到我正在尋找的東西回答其他人的問題。但現在看來我無法弄清楚如何解決這個問題(我試着在其他的Excel論壇上詢問,但沒有結果)。VBA在彙總表中複製/粘貼一個動態範圍
我正在處理非常大的數據輸出文件,這些文件在多個工作簿中提供了我需要分散在工作表中的所有變量。爲了統計分析這些數據文件,我們經常需要將輸出數據重新排列成更具統計友好的格式。 我想要編寫的代碼是我需要分析的每個工作簿的摘要新工作表,這些工作簿將使用從每個工作表複製的動態範圍進行填充,並將其粘貼到另一個工作簿的下方。
困難在於範圍不固定的事實:在列「A」中具有變量起始點作爲行,並且具有可變長度(並因此是可變終點,但總是在列「F」中) 。
所以我需要去適應一個簡單的複製/粘貼代碼就像我一直在使用的年齡
Sub SummurizeSheets()
Dim ws As Worksheet
Application.ScreenUpdating = False
Sheets("Summary").Activate
For Each ws In Worksheets
If ws.Name <> "Summary" Then
ws.Range("A1:A2").Copy
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Transpose:=True
End If
Next ws
End Sub
與動態範圍出發的一個: 列「A」,row =(MATCH(Summary!$M$1;[SheetName]!A:A;0)
並在從範圍起點開始的最後一個非空白單元結束(這實際上是屬於概要列M1中描述的變量的範圍內的最後一個被填充單元)
這最後一部分看起來像弗蘭肯斯坦的怪物: MATCH(TRUE;INDEX(ISBLANK(INDIRECT(CONCATENATE(CONCATENATE("A";MATCH(Summary!$M$1
; [SheetName]!A:A;0));":";"A100")));0;0);0)+ROW(INDIRECT(CONCATENATE("A";MATCH(Summary!$M$1;[SheetName]!A:A;0))))-1
它基本上從上述出發點到A100找到任意自定義範圍中的第一個空白單元格,並且一旦找到就用(-1)偏移行號。
最後一個問題:我怎麼能翻譯這兩個單元格引用到ws.Range("xx:xx")
上述有我的老朋友複製/粘貼完成它的工作與我要求的範圍內?
您的frankenstein公式的輸出是什麼? – gizlmo
如果你有兩個單元格引用,你可以使用'Range(reference1,reference2)'。引用可以是字符串或範圍對象。 – arcadeprecinct
@gizlmeier它是一個行號 – xanadu