2017-06-13 86 views
-2

我有一組數據如下圖,我想有條件地過濾。具體來說,在金額列 - 如果單元格值爲197,我希望能夠在它下面插入2個空白行,並使用原始行中的數據的完全副本或用增加時間戳的簡單公式填充它。宏插入行和填充

Data Set/Table

我不太熟悉VBA對象,所以我一直在尋找所有和嘗試不同的東西,但我覺得我可能會失去了一些東西明顯。在接下來創建的兩行中,我希望將每行的時間戳(創建(UTC)列)增加一個月,然後複製所有其他數據。我不知道如何編寫一個可以填充的宏,並希望得到任何幫助。

謝謝!

回答

1

像這樣的東西應該做的伎倆。

確保您與板運行它,你要更新活動的(它使用ActiveSheet

Sub InsertAndUpdate() 
Dim x As Long 
For x = ActiveSheet.UsedRange.Rows.CountLarge To 2 Step -1 
    If Cells(x, "B").Value = 197 Then 
     Cells(x + 1, "B").EntireRow.Insert 
     Cells(x + 1, "B").EntireRow.Insert 
     Cells(x, "B").EntireRow.Copy Cells(x + 1, "B").EntireRow 
     Cells(x, "B").EntireRow.Copy Cells(x + 2, "B").EntireRow 
     Cells(x + 1, "A").Value = DateAdd("m", 1, Cells(x + 1, "A").Value) 
     Cells(x + 2, "A").Value = DateAdd("m", 2, Cells(x + 2, "A").Value) 
    End If 
Next x 
End Sub 

您也可以縮短它有點像這樣,但使用嵌套循環的這麼簡單的東西是有點兒MEH

Sub InsertAndUpdate() 
Dim x As Long, y As Integer 
For x = ActiveSheet.UsedRange.Rows.CountLarge To 2 Step -1 
    If Cells(x, "B").Value = 197 Then 
     For y = 1 To 2 
      Cells(x + y, "B").EntireRow.Insert 
      Cells(x, "B").EntireRow.Copy Cells(x + y, "B").EntireRow 
      Cells(x + y, "A").Value = DateAdd("m", y, Cells(x + y, "A").Value) 
     Next y 
    End If 
Next x 
End Sub 

結果(由我強調添加的行)

Results