天天看點

VBA: EXCEL中插入指定的行數并添加值

一、代碼需求

有一列日期資料,因中間有間隔月份,需要把月份補齊

VBA: EXCEL中插入指定的行數并添加值

如圖:A列是原始資料,需添加一個輔助列B列:插入的行數,由函數計算得來(=DATEDIF(A2,A3,”m”)-1)

二、代碼示例

Sub 插入行并添加值()
Dim x As Integer, y As Integer, z As Integer, n As Integer
    z = Sheet4.Range("a65536").End(xlUp).Row
    y = 
    For n =  To z
     If Cells(y - , "B").Value <>  Then
        Rows(y).Resize(Cells(y - , "B").Value).Insert
        For x =  To Cells(y - , "B").Value
          Cells(y, "A").Value = DateAdd("m", , Cells(y - , "A").Value)
          y = y + 
        Next
    End If
    y = y + Cells(y - , "B").Value + 
    Next n
End Sub
           

注釋版:

Sub 插入行并添加值()

Dim x As Integer, y As Integer, z As Integer, n As Integer

 z = Sheet4.Range("a65536").End(xlUp).Row   '一共有多少行數
 y =    '根據不同的情形需要調整
    For n =  To z    '控制整體循環的次數
     If Cells(y - , "B").Value <>  Then       
     '這個語句是因為rows(A).resize(B).insert 當B為0時語句報錯,設定IF,如果插入行為0跳過該循環
        Rows(y).Resize(Cells(y - , "B").Value).Insert  
        '該語句作用是在y行的上方插入(Cells(y - 1, "B").Value)行空行
        For x =  To Cells(y - , "B").Value    
        '該循環是為了将插入空行中添加日期
         Cells(y, "A").Value = DateAdd("m", , Cells(y - , "A").Value)   'dateadd函數直接添加月份
         y = y + 
        Next

    End If
        y = y + Cells(y - , "B").Value + 
    Next n

End Sub
           

三、運作結果

VBA: EXCEL中插入指定的行數并添加值

繼續閱讀