Ich habe Daten, die ich häufig aus einer Quellarbeitsmappe exportieren (Format ist konsistent, d. H. Alle Spaltennamen befinden sich in der ersten Zeile). Ich brauche nur die Daten von etwa 8 Spalten, die sporadisch im Arbeitsblatt verteilt sind ("Sheet1"). Unten ist der Code, den ich bisher dazu habe.Excel VBA - Spalten löschen, wenn Spaltenname <> "Zeichenfolgenname"
ich zwei Probleme habe,
das Makro alle meine Daten löschen und
Meine If-Anweisung ist sehr ineffizient. Ich möchte eine Variable erstellen, die alle Zeichenfolgen enthält, die die Spaltennamen enthalten, die ich nicht löschen möchte. Ich denke, ein Array zu schaffen, aber ich bin nicht sicher, ob meine Schleife richtig
i.e., colNames = array("Col 1 that I want to keep", "Col 2", etc)
der Code handeln würde:
Sub test2()
Dim currentSht As Worksheet
Dim i As Integer
Dim lastRow As Long, lastCol As Long
Dim startCell As Range
Set currentSht = ActiveWorkbook.Sheets("Sheet1")
Set startCell = currentSht.Range("A1")
lastRow = startCell.SpecialCells(xlCellTypeLastCell).Row
lastCol = startCell.SpecialCells(xlCellTypeLastCell).Column
With currentSht
For i = lastCol To 1 Step -1
If .Cells(1, i).Text <> "First Name" Or .Cells(1, i).Text <> "Last Name" Or .Cells(1, i).Text <> "OB Hours(hr)" Or .Cells(1, i).Text <> "OB Talk Time (TT)" Or .Cells(1, i).Text <> "OB ACW Time" Or .Cells(1, i).Text <> "Handled-OB" Or .Cells(1, i).Text <> "Handled-OB/hr" Or .Cells(1, i).Text <> "TT Avg" Or .Cells(1, i).Text <> "Max Talk Time" Then
Columns(i).EntireColumn.Delete
End If
Next i
End With
End Sub
Nochmals vielen Dank alle.
Ändern Sie den '' Or' zu und' in der if-Anweisung –