Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellbereich mit Lücken

Zellbereich mit Lücken
25.02.2015 12:48:07
Reinhold
Folgendes Problem habe ich mit einer Excel-VBA-Anwendung:
Ich habe einen Zellbereich mit einem Namen versehen "MeinBereich". Dieser Bereich bezieht sich auf die Zeilen 1, 3, 5, 7 usw. der Spalte "A", also auf jede 2. Zeile.
Range("MeinBereich").Cells(2)
spricht aber nicht die Zeile 3 aus Spalte "A" an, sondern die Zeile 2, die ja garnicht zu "MeinBereich" gehört.
Was mache ich falsch?

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbereich mit Lücken
25.02.2015 12:53:12
Hajo_Zi
bei mir wir die zweite Zelle im Bereich ausgelesen also B1

AW: Zellbereich mit Lücken
25.02.2015 13:05:15
Rudi
Hallo,
in dem Fall kommst du mit Range("MeinBereich").Areas(2) weiter.
Gruß
Rudi

AW: Zellbereich mit Lücken
25.02.2015 13:51:33
Daniel
Hi
sobald du bei Zellenbereichen mit einem Index arbeitest, verwendet VBA immer nur die erste Zelle des Mutterbereichs (normalerweise die linke obere Zelle) und zählt von dieser Zelle aus den Index.
Der Rest des Mutterbereichs spielt dann keine Rolle mehr.
wenn du aus so einem "zerklüfteten" Zellbereich die 2. Zelle brauchst, dann geht das so:
dim Zelle as Range
dim Zähler as long
for Each Zelle In Range("MeinBereich")
Zähler = Zähler + 1
if Zähler = 2 then Exit For
Next

Nach dieser Schleife ist dann Zelle die 2. Zelle von "MeinBereich"
die von Rudi erwähnten Areas sind einzwischenglied zwischen einer Range (Zellbereich) und den einzelnen Zellen.
Hat dein Zellbereich Lücken, dann sind die einzelnen Areas die lückenlosen rechteckigen Teilbereiche, aus denen dieser Zellbereich zusammengesetzt ist.
Gruß Daniel

Anzeige
Wolltest du mit einer ZellFml arbeiten, ...
25.02.2015 15:00:17
Luc:-?
…Reinhold,
hättest du das gleiche Problem; INDEX(MeinBereich;2) würde ebenfalls B1 ergeben, falls MeinBereich als =A1;C1;E1;… definiert ist. Hier müsste dann in Analogie zu VBA-Areas auch das 4.Argument angegeben wdn, also so: INDEX(MeinBereich;1;;2)
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Zellbereich mit Lücken
26.02.2015 11:46:46
Reinhold
Liebes Forum,
vielen Dank für die Antworten!
Der Vorschlag von Daniel funktioniert und löst mein Problem.
@Luc: Ich wollte nicht mit einer Zellformel arbeiten. Aber trotzdem vielen Dank, weil mir Deine Antwort bei einem anderen Problem hilft.
Gruss,
Reinhold

Bitte sehr; das war auch die Möglichkeitsform, ...
27.02.2015 09:51:35
Luc:-?
…um die Verbindung zwischen VBA-Begriffen und ZellFml-Beziehung/-Umsetzung darzustellen.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
;
Anzeige

Infobox / Tutorial

Zellbereich mit Lücken in Excel VBA


Schritt-für-Schritt-Anleitung

Um mit einem Zellbereich in Excel zu arbeiten, der Lücken enthält, kannst du folgende Schritte befolgen:

  1. Definiere den Zellbereich: Gehe zu Formeln > Namensmanager und erstelle einen neuen Namen, z.B. "MeinBereich". Definiere diesen Bereich als =A1;C1;E1;... (jede zweite Zeile in Spalte A).

  2. Zugriff auf Zellen: Um auf spezifische Zellen in diesem Bereich zuzugreifen, solltest du VBA verwenden. Ein einfaches Beispiel wäre:

    Dim Zelle As Range
    Dim Zähler As Long
    For Each Zelle In Range("MeinBereich")
       Zähler = Zähler + 1
       If Zähler = 2 Then Exit For
    Next
  3. Verwende Areas: Wenn du den zweiten Bereich des Zellbereichs ansprechen möchtest, benutze Range("MeinBereich").Areas(2).


Häufige Fehler und Lösungen

  • Problem: Der Zugriff auf Range("MeinBereich").Cells(2) gibt die falsche Zelle zurück.

    • Lösung: Nutze die Areas-Eigenschaft oder durchlaufe den Zellbereich mit einer Schleife, wie oben beschrieben.
  • Problem: Verwendung der INDEX-Funktion gibt unerwartete Ergebnisse.

    • Lösung: Bei der Verwendung von INDEX für lückenhafte Bereiche kannst du das 4. Argument hinzufügen: INDEX(MeinBereich;1;;2).

Alternative Methoden

Eine alternative Methode zur Arbeit mit Zellbereichen mit Lücken ist die Verwendung von FILTER- oder AGGREGAT-Funktionen in Excel, um Daten dynamisch zu extrahieren. Diese Funktionen sind besonders nützlich in Excel-Versionen, die die dynamischen Array-Funktionen unterstützen (Excel 365 und Excel 2019).


Praktische Beispiele

  1. Beispiel für die Verwendung von VBA:

    Dim Zelle As Range
    Dim Zähler As Long
    For Each Zelle In Range("MeinBereich")
       Zähler = Zähler + 1
       If Zähler = 2 Then
           MsgBox Zelle.Address
           Exit For
       End If
    Next
  2. Beispiel für die Verwendung von INDEX:

    =INDEX(MeinBereich;1;;2)

Tipps für Profis

  • Verwende With-Anweisung: Damit kannst du den Code klarer und effizienter gestalten, z.B.:

    With Range("MeinBereich")
      MsgBox .Areas(1).Cells(2).Address
    End With
  • Debugging: Nutze Debug.Print in VBA, um den Inhalt von Variablen zu überprüfen und mögliche Fehlerquellen zu identifizieren.


FAQ: Häufige Fragen

1. Frage Was ist der Unterschied zwischen Cells und Areas in einem Zellbereich?

Antwort Cells bezieht sich auf die Zellen innerhalb des gesamten Bereichs, während Areas die einzelnen, lückenlosen Teile des Bereichs zurückgibt.

2. Frage Wie kann ich sicherstellen, dass mein Zellbereich immer aktuell bleibt?

Antwort Nutze die Funktion Tabelle1.Namen oder Tabelle1.Bereich, um sicherzustellen, dass der Bereich dynamisch aktualisiert wird, wenn sich die Daten ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige