Durchlaufen einer Datenliste in einem Arbeitsblatt mithilfe von Makros in Excel

Zusammenfassung

Wenn Sie ein VBA-Makro (Microsoft Visual Basic für Applikationen) schreiben, müssen Sie möglicherweise eine Datenliste in einem Arbeitsblatt durchlaufen. Es gibt mehrere Methoden zum Ausführen dieser Aufgabe. Der Abschnitt „Weitere Informationen“ in diesem Artikel enthält Informationen zu den Methoden, die Sie zum Durchsuchen der folgenden Listentypen verwenden können:

  • Eine Liste, die eine bekannte, konstante Anzahl von Zeilen enthält.
  • Eine dynamische Liste oder eine Liste mit einer unbekannten Anzahl von Zeilen.
  • Eine Liste, die einen bestimmten Datensatz enthält.

Weitere Informationen

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind. Bei den folgenden Codebeispielen wird davon ausgegangen, dass die Liste über eine Kopfzeile verfügt, die in Zelle A1 beginnt, und Daten, die in Zelle A2 beginnen.

So durchsuchen Sie eine Liste mit einer konstanten, bekannten Anzahl von Zeilen

Dieser Code verschiebt Spalte A nach unten an das Ende der Liste:

   Sub Test1()
      Dim x As Integer
      ' Set numrows = number of rows of data.
      NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
      ' Select cell a1.
      Range("A2").Select
      ' Establish "For" loop to loop "numrows" number of times.
      For x = 1 To NumRows
         ' Insert your code here.
         ' Selects cell down 1 row from active cell.
         ActiveCell.Offset(1, 0).Select
      Next
   End Sub

So durchsuchen Sie eine dynamische Liste oder eine Liste mit einer unbekannten Anzahl von Zeilen

Dieser Code verschiebt Spalte A nach unten an das Ende der Liste. (Dieser Code setzt voraus, dass jede Zelle in Spalte A bis zum Ende einen Eintrag enthält.)

   Sub Test2()
      ' Select cell A2, *first line of data*.
      Range("A2").Select
      ' Set Do loop to stop when an empty cell is reached.
      Do Until IsEmpty(ActiveCell)
         ' Insert your code here.
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   End Sub

              Hinweis Wenn es in Spalte A leere Zellen in den Daten gibt, ändern Sie diesen Code, um diese Bedingung zu berücksichtigen. Stellen Sie sicher, dass die leeren Zellen einen konsistenten Abstand voneinander aufweisen. Wenn z. B. jede zweite Zelle in Spalte A leer ist (dies kann etwa auftreten, wenn jeder Datensatz zwei Zeilen verwendet und die jeweils zweite Zeile um eine Zelle eingerückt ist), kann diese Schleife wie folgt geändert werden:

     ' Set Do loop to stop when two consecutive empty cells are reached.
     Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
        ' Insert your code here.
        '
       ' Step down 2 rows from present location.
       ActiveCell.Offset(2, 0).Select
     Loop

So durchsuchen Sie eine Liste nach einem bestimmten Datensatz

Dieser Code verschiebt Spalte A nach unten an das Ende der Liste:

   Sub Test3()
      Dim x As String
      Dim found As Boolean
      ' Select first line of data.
      Range("A2").Select
      ' Set search variable value.
      x = "test"
      ' Set Boolean variable "found" to false.
      found = False
      ' Set Do loop to stop at empty cell.
      Do Until IsEmpty(ActiveCell)
         ' Check active cell for search value.
         If ActiveCell.Value = x Then
            found = TRUE
            Exit Do
         End If
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   ' Check for found.
      If found = True Then
         Msgbox "Value found in cell " & ActiveCell.Address
      Else
         Msgbox "Value not found"
      End If
   End Sub