2013-06-05 6 views
8

既存の列を見やすくするために、分離した列をExcelレポートに挿入したいと考えています。Excelで列を動的に挿入するにはどうすればよいですか?

レポートは動的に作成され、列の数は決してわかりません。 5、10、17、があるかもしれないなど

セクションはFから始まり、ival=Application.WorksheetFunction.CountIf(range("D2:D" & LastRow), "Other")

になりそうival=10その後、列はFGHIJKLMNOある、と私はG、G & F &間の列を挿入する必要がある場合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 

答えて

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 
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 
関連する問題