2017-08-29 23 views
-1

我有一張工作表(工作表2)連接到一個具有動態數據的CSV文件。我通過應用列過濾器來複制數據,然後將其粘貼到sheet1,以便可以使用宏以某種方式對其進行格式化/顯示。我希望能夠在sheet1上的兩個現有行之間插入數據,並讓這些行中的公式自動更新到動態範圍。在兩個現有行之間粘貼數據,同時展開公式

所以基本上...

ExistingRow1 

Blank Row <- insert data here, having it expand down 

ExistingRow2 | formula <- formulas should update to include new rows from sheet2 

回答

0

下面的代碼會做你的描述,以及.gif動畫演示了它的工作。請注意,您可以看到公式欄中正在使用的公式是什麼,然後將Sheet 2上的選擇複製到Sheet1,其中行根據需要進行移動。

enter image description here

Sub insertRows() 
Dim sh2 As Worksheet, sh1 As Worksheet 
Dim r1 As Range, r2 As Range, i As Integer 
Set sh1 = Worksheets("Sheet1") 
Set sh2 = Worksheets("Sheet2") 
sh2.Activate 
Set r2 = Application.InputBox("select rows to copy on Sheet2", , , Type:=8) 
sh1.Activate 
Set r1 = Application.InputBox("select blank row on Sheet1", , , Type:=8) 
For i = 1 To r2.Rows.Count - 1 
    r1.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
Next i 
r2.Copy 
r1.Offset(-r2.Rows.Count + 1, 0).Select 
sh1.Paste 
End Sub 

雖然這是你的描述,這是一個有點尷尬的方式做事情,如果有更多人知道您的數據會等......那麼一個更優雅的方式可用於。

+0

這是接近我想要的。我需要能夠在沒有輸入框的情況下做到這一點。它應該從sheet2中獲取數據並將其粘貼到sheet1上,並使用在文件打開時運行的宏。我遇到的問題是補償了我在sheet2上覆制的數據不總是相同的大小,因此需要行能夠擴展。 – deceptionx

+0

我同意沒有輸入框會更好。但爲了在sheet1上正確地展開行,您需要知道從哪裏開始複製以及複製了多少行。如果您有辦法知道您可以避開輸入框,並且您可以定位要複製的範圍並調整for-next循環。我希望這是有幫助的,你可以從這裏拿起球 –

+0

我想出瞭如何爲我的宏定義「r2」,但是如果我想將我的「r1」定義爲我的sheet1中的第一個空白行,我會怎麼做呢?我仍然需要它來擴展我的定義範圍。感謝您一直以來的幫助! – deceptionx

相關問題