So bearbeiten Sie Daten in Excel mit VBA
Makros verarbeiten VBA-Code, um große Datenmengen zu verwalten, deren Änderung andernfalls viel Zeit in Anspruch nehmen würde. Mit VBA können Sie beispielsweise ein Makro erstellen, um bestimmte Felder automatisch zu formatieren, die Ihren festgelegten Kriterien entsprechen.
Unten sehen Sie ein Beispiel für ein in Excel verwendetes VBA-Skript:
Sub ConfigureLogic ()
Dim qstEntries
Dim dqstEntries
Dim qstCnt, dqstCnt
qstEntries = Range ("QualifiedEntry"). Count
qst = qstEntries - WorksheetFunction.CountIf (Range ("QualifiedEntry"), "")
ReDim QualifiedEntryText (qst)
'MsgBox (qst)
dqstEntries = Range ("DisQualifiedEntry"). Count
dqst = dqstEntries - WorksheetFunction.CountIf (Range ("DisQualifiedEntry"), "")
ReDim DisqualifiedEntryText (dqst)
'MsgBox (dqst)
Für qstCnt = 1 Nach qst
QualifiedEntryText (qstCnt) = ThisWorkbook.Worksheets ("Qualifiers"). Range ("J" & 8 + qstCnt) .value
'MsgBox (QualifiedEntryText (qstCnt))
Protokollierung ("Konfigurierter qualifizierter Eintrag Eintrag #" & qstCnt & "als {" & QualifizierterEntryText (qstCnt) & "}")
Nächster
For dqstCnt = 1 To dqst
DisqualifiedEntryText (dqstCnt) = ThisWorkbook.Worksheets ("Qualifiers"). Range ("M" & 8 + dqstCnt) .value
'MsgBox (DisqualifiedEntryText (dqstCnt))
Protokollierung ("Configured DisQualified Entry entry #" & qstCnt & "as {" & DisqualifiedEntryText (dqstCnt) & "}")
Nächster
includeEntry = ThisWorkbook.Worksheets ("Qualifiers"). Range ("IncludeSibling"). value
'MsgBox (includeEntry)
Protokollierung ("Einträge in Suche enthalten -" & includeEntry)
End Sub
Analysieren und Bearbeiten von Einträgen in einer Tabelle
Um VBA für die Datenanalyse zu verwenden, müssen Sie die Einstellungen in Excel für das Developer Tool überprüfen. Um es zu finden, suchen Sie die Excel-Multifunktionsleiste und suchen Sie nach der Registerkarte Entwickler . Wenn es nicht angezeigt wird, müssen Sie es im Menü Excel- Einstellungen aktivieren.Erstellen Sie als Nächstes ein neues Arbeitsblatt und nennen Sie es "Qualifikatoren". Wir werden dieses Blatt verwenden, um nach allen Dingen zu suchen, die die Auswahl qualifizieren.
Als nächstes richten Sie die Qualifikationsmerkmale auf dem Blatt gemäß dem Code ein. Es muss manuell eingegeben werden; Ausschneiden und Einfügen funktioniert nicht.
ThisWorkbook.Worksheets ("Qualifiers"). Range ("J" & 8 + qstCnt) .value
So lokalisieren Sie den Bereich und konstruieren ein Array
Der Bereich in der obigen Funktion ist Zelle J9. Die Range-Funktion notiert eine 8; Der tatsächliche Bereich ist jedoch 9, weil:Für qstCnt = 1 Nach qst
Die obige Anweisung beginnt bei 1 und nicht bei 0. Daher beginnt die Liste bei 9. In diesem Fall ist zu beachten (qstCnt = 1).
Platzieren Sie zufällige Wörter in den Zellen J9-J13, um ein Array aus Einträgen in dem Qualifiers-Arbeitsblatt zu erstellen. Sobald die Zeilen fertig sind, können wir mit dem Suchen und Bearbeiten von Daten in Excel fortfahren.
Private Unterzählblätter ()Blattanzahl verdunkeln
WS als Arbeitsblatt dimmen
Blattanzahl = 0
Protokollierung ("***** Scrub starten *********")
Für jedes WS in ThisWorkbook.Worksheets
Blattanzahl = Blattanzahl + 1
Wenn WS.Name = "Ausgewählt", dann
'müssen das Datum und die Uhrzeit in Blatt mit dem Namen "Protokollierung" protokollieren
ActionCnt = ActionCnt + 1
Protokollierung ("Calling Sheet:" & WS.Name)
Scrubsheet (Blattanzahl)
Sonst
ActionCnt = ActionCnt + 1
Protokollierung ("Blatt übersprungen:" & WS.Name)
End If
Nächstes WS
'MsgBox ("Endung")
ActionCnt = ActionCnt + 1
Protokollierung ("**** Scrub DONE!")
Application.ScreenUpdating = True
End Sub
Es gibt ein Beispiel für einen Arbeitsregisterzähler.
Blattanzahl verdunkeln
WS als Arbeitsblatt dimmen
Blattanzahl = 0
Protokollierung ("***** Scrub starten *********")
Für jedes WS in ThisWorkbook.Worksheets
Blattanzahl = Blattanzahl + 1
Stellen Sie nach dem Initialisieren des Blattzählers den Wert 0 ein, um den Zähler neu zu starten.
Logging () ist eine weitere Unterroutine, die alle Aktionen protokolliert, um die Auswahl zu überwachen.
Die nächste For-Schleife richtet die aktive Arbeitsmappe zum Zählen ein. WS ist das initialisierte und ThisWorkbook. Arbeitsblätter ist die aktive Registerkarte im Buch. Da wir die Arbeitsmappe nicht benannt haben, wird dieses Modul auf jeder aktiven Arbeitsmappe ausgeführt. Wenn Sie an mehreren Arbeitsmappen arbeiten und die falsche aktiviert ist, wird versucht, sie auszuführen. Treffen Sie Vorsichtsmaßnahmen, um Fehler zu vermeiden, und benennen Sie Ihre spezifische Arbeitsmappe oder bearbeiten Sie jeweils nur eine.
Jedes Mal, wenn die Schleife ausgelöst wird, wird der Blattanzahl eine Variable hinzugefügt, um die Anzahl der Registerkarten zu verfolgen. Dann bewegen wir uns zu:
Wenn WS.Name = "Ausgewählt", dann'müssen das Datum und die Uhrzeit in Blatt mit dem Namen "Protokollierung" protokollieren
ActionCnt = ActionCnt + 1
Protokollierung ("Calling Sheet:" & WS.Name)
Scrubsheet (Blattanzahl)
Sonst
ActionCnt = ActionCnt + 1
Protokollierung ("Blatt übersprungen:" & WS.Name)
End If
Hier suchen wir nach der Registerkarte Ausgewählt.
Wenn die Variable WS gleich Selected ist, protokollieren wir sie und lösen das Unterprogramm Scrub Sheet aus. Wenn die Variable WS nicht gleich Selected ist, wird protokolliert, dass dieses Blatt übersprungen wurde, und die Aktion wird gezählt. Der obige Code ist ein Beispiel dafür, wie die Anzahl einer bestimmten Registerkarte gezählt und diese gefunden wird.
Die folgende Auflistung zeigt die verschiedenen Methoden, mit denen Daten bearbeitet werden können!
Habe Spaß!
So zählen Sie die Anzahl der Blätter in einer Arbeitsmappe
Dim TABFür jedes TAB in ThisWorkbook.Worksheets
'etwas Routine hier
Nächster
Suchen Sie die letzte Zeile, Spalte oder Zelle in einem Arbeitsblatt
Cellcount verdunkelncellcount = Cells (ThisWorkbook.Worksheets ("Arbeitsblatt"). Rows.Count, 1) .End (xlUp) .Row
Filtern nach erweiterten Kriterien
Bereich ("A2: Z99"). Sortierschlüssel1: = Bereich ("A5"), Reihenfolge1: = xlAscending, Header: = xlNo
Wenden Sie die Auto-Fit-Eigenschaft auf eine Spalte an
Spalten ("A: A"). EntireColumn.AutoFit
Abrufen von Werten aus einem anderen Arbeitsblatt
neuen Wert dimmennewvalue = ThisWorkbook.Worksheets ("Arbeitsblatt"). Range ("F1"). value
Einfügen einer Spalte in ein Arbeitsblatt
Dim Row, ColumnZellen (Zeile, Spalte) .EntireColumn.Select
Auswahl einfügen
Fügen Sie mehrere Spalten in ein Arbeitsblatt ein
Dimmen insertCntDim Row, Column
Für insertCnt = 1 bis N
ThisWorkbook.Worksheets ("Arbeitsblatt"). Wählen Sie
Zellen (Zeile, Spalte) .EntireColumn.Select
Auswahl einfügen
Nächster
Hinzufügen eines benannten Bereichs zu einem bestimmten Blatt
ThisWorkbook.Worksheets ("Arbeitsblatt"). Names.Add Name: = "Status", RefersToR1C1: = "= Arbeitsblatt! C2"
Fügen Sie eine gesamte Zeile in ein Arbeitsblatt ein
Dim Row, ColumnZellen (Zeile, Spalte) .EntireRow.Select
Auswahl einfügen
Kopieren Sie eine gesamte Zeile zum Einfügen
ActiveSheet.Range ("A1"). EntireRow.SelectAuswahl.Kopieren
Löschen Sie eine gesamte Zeile
ActiveSheet.Range ("A1"). EntireRow.SelectAuswahl löschen
Wählen Sie ein bestimmtes Blatt aus
ThisWorkbook.Worksheets ("Arbeitsblatt"). Wählen Sie
Werte eines Bereichs vergleichen
Dim firstrangeDim Logictest
Logictest = "irgendein Wort oder Wert"
Wenn (Range (firstrange) .value = Logictest) dann
'etwas Routine hier
End If
Bild: © Microsoft.