如何在Excel中动态插入列?

xyz*_*xyz 8 excel vba excel-vba

我想将分隔列插入Excel报表,以使现有列更易于查看.

报告是动态创建的,我不知道会有多少列; 可能有5,10,17等

该部分从F开始,然后转到 ival=Application.WorksheetFunction.CountIf(range("D2:D" & LastRow), "Other")

因此,如果ival=10那时列是FGHIJKLMNO,我需要在F&G,G&H,H&I,I&J,...和N&O之间插入列.

这可能是插入列的可能性: Workbooks("yourworkbook").Worksheets("theworksheet").Columns(i).Insert

但我不知道如何循环ival.

Sub InsertColumns()
    Dim iVal As Integer
    Dim Rng As range
    Dim LastRow As Long
    Dim i  As Integer

    With Sheets("sheet1")
        LastRow = .range("D" & .Rows.Count).End(xlUp).Row
    End With

    iVal = Application.WorksheetFunction.CountIf(range("D2:D" & LastRow), "Other")

    For i = 7 To iVal - 1
    Workbooks("yourworkbook").Worksheets("theworksheet").Columns(i+1).Insert
    Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

San*_*osh 9

以下代码应该无需担心ival:

Sub InsertSeparatorColumns()

    Dim lastCol As Long

    With Sheets("sheet1")
        lastCol = Cells(2, .Columns.Count).End(xlToLeft).Column

        For i = lastCol To 7 Step -1
            .Columns(i).Insert
            .Columns(i).ColumnWidth = 0.5
        Next

    End With

End Sub
Run Code Online (Sandbox Code Playgroud)