2013-06-05 5 views
8

Ich möchte Trennsäulen in einen Excel-Bericht einfügen, um die Anzeige der vorhandenen Spalten zu vereinfachen.Wie füge ich dynamisch Spalten in Excel ein?

Der Bericht wird dynamisch erstellt und ich weiß nie, wie viele Spalten es geben wird; könnte es 5, 10, 17, usw. sein

Der Abschnitt beginnt bei F und geht zu ival=Application.WorksheetFunction.CountIf(range("D2:D" & LastRow), "Other")

Also, wenn ival=10 dann sind die Spalten FGHIJKLMNO, und ich brauche Spalten zwischen F & G, G & einfügen H, H & I, I & J, ... und N & O.

Dies kann eine Möglichkeit zum Einfügen von Spalten sein: Workbooks("yourworkbook").Worksheets("theworksheet").Columns(i).Insert

Aber ich bin nicht sicher, wie durch ival zu durchlaufen.

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 

Antwort

9

Der Code unten sollte, ohne arbeiten zu befürchten 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

Try this:

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 
Verwandte Themen