9

既存の列を見やすくするために、区切り列を 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
4

2 に答える 2

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
于 2013-06-05T03:58:20.950 に答える
3

これを試して:

Sub InsertSeparatorColumns()
    Dim ws as Worksheet
    Dim firstCol As String
    Dim lastRow As Long
    Dim i As Long
    Dim howManySeparators As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")
    firstCol = "F"
    lastRow = ws.Range("D" & ws.Rows.Count).End(xlUp).Row
    howManySeparators = Application.WorksheetFunction.CountIf _
                            (ws.range("D2:D" & LastRow), "Other")

    For i = 1 To howManySeparators * 2 Step 2
        ws.Range(firstCol & 1).Offset(, i).EntireColumn.Insert
    Next i
End Sub
于 2013-06-05T01:29:25.890 に答える