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

Forumthread: gefüllte Zelle in einem Bereich suchen

gefüllte Zelle in einem Bereich suchen
Ron
Hallo Forum,
ich habe ein VBA-Problem, bei dem ich Hilfe brauch. Folgende Situation:
Ich habe eine Tabelle mit 6 Spalten und 300 Zeilen. In jeder Zeile steht nur 1 Wert in einer der 6 Spalten.
Ich möchte nun rausbekommen, wenn ich die 300 Zeilen über eine For-Nextchleife abarbeite, in welcher der 6 Spalten dieser Wert steht. Die Nummer der Spalte soll in einer Variable gespeichert werden. Denn mit dieser Variable bearbeite ich dann Folgemakros
Wie geht das?
Danke für eure Hilfe.
Gruß Ron
Anzeige
AW: gefüllte Zelle in einem Bereich suchen
15.12.2009 16:59:09
selli
hallo ron,
wie genau stellst du dir das denn vor?
willst du 300 variable sammeln?
gruß selli
AW: gefüllte Zelle in einem Bereich suchen
15.12.2009 17:02:03
Ron
Nein, es soll so laufen:
For x = ende_zeile To 0 Step -1
set bereich = Range("F" & ende_zeile & ":" & "L" & ende_zeile)
'suche nun in bereich welche von den 6 Zellen gefüllt ist
'gefunden: spalte =7
'nächstes makro welches die Variable spalte benutzt
Next x
Anzeige
AW: gefüllte Zelle in einem Bereich suchen
15.12.2009 18:24:11
Jens
Hallo Ron
Du willst also 300 mal das gleiche Makro ('nächstes makro welches die Variable spalte benutzt ) mit einem anderen Variablen-Wert ablaufen lassen?
Gruß Jens
AW: gefüllte Zelle in einem Bereich suchen
15.12.2009 18:46:53
Ron
Ja so hatte ich es mir zumindestens gedacht.
Das zweite makro mach nichts anderes als sich den wert (das ist ein Text) aus dieser spalte zu merken, in eine anderer Tabelle zu gehen, dort diesen Text, der eindeutig ist zu suchen und sich dazu einen passende Wert in ein array zu schreiben. Mit diesem Array rechne ich dann.
Das dürfte von der Laufzeit her net so lang dauern meine ich.
Anzeige
AW: gefüllte Zelle in einem Bereich suchen
16.12.2009 17:24:36
Ron
Kann mir einer helfen bei dem Problem?
AW: gefüllte Zelle in einem Bereich suchen
16.12.2009 17:40:54
Jens
Hi Ron
Könntest Du die Datei mal hochladen?
Gruß Jens
AW: gefüllte Zelle in einem Bereich suchen
17.12.2009 08:15:29
Ron
Hallo Jens, danke schon mal für deine Hilfe, aber das Projekt hat sich im dem Sinne erledigt weil ich das anders lösen musste wegen Zeitdruck.
Trotzdem würde mich der VBA-Code interessieren wenn ich 5 Spalten haben und z.B 5 Zeilen, jede Zeile hat nur 1 Wert sprich ein Wert steht in A1, der zweite in C4, der Dritte in D3, der vierte in B4 und der fünfte in E5 und ich komme mit einer for next schleife für die 5 Zeilen, definiere über set jeweils den Bereich A1:E1, dann A2:E2 usw. wie ich dann raus bekomme welche der 5 Zellen nun gefüllt ist. Das ergebnis kann die Zelladresse sein oder die Spalte in der er den Wert gefunden hat, denn die Zeile kenne ich ja schon.
Weißt du wie sowas geht Jens?
Gruß Ron
Anzeige
AW: gefüllte Zelle in einem Bereich suchen
17.12.2009 12:44:55
Jens
Hallo Ron
Vom Prinzip her funktioniert das hier:
Sub tt()
Dim LoZeile As Long
Dim LoSpalte As Long
Dim loLetzte As Long
loLetzte = 9
For LoZeile = 1 To loLetzte
For LoSpalte = 1 To 5
If Cells(LoZeile, LoSpalte)  "" Then
MsgBox Cells(LoZeile, LoSpalte).Address 'Zelladresse
'MsgBox LoSpalte ' Spaltennummer
End If
Next
Next
End Sub
Gruß Jens
Anzeige
AW: gefüllte Zelle in einem Bereich suchen
17.12.2009 13:05:37
Ron
ah ok so eine Lösung habe ich mir fast gedacht.
Aber mit dem Befehl
set bereich=Range("A1:E1")
Set zelle=bereich.find(irgendeine Zelle leer) das geht nicht irgendwie oder?
AW: gefüllte Zelle in einem Bereich suchen
17.12.2009 13:58:35
Jens
Hi
Vielleicht noch so (ungetestet):
Sub tt()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Range("A1:E9")
For Each Zelle In Bereich
If Zelle  "" Then MsgBox Zelle.Column
Next
Set Bereich = Nothing
End Sub
oder so:
Sub tt()
Dim Bereich As Range
Dim Zelle As Range
Dim loZeile As Long
For loZeile = 1 To 9
Set Bereich = Range("A" & loZeile & ":E" & loZeile)
For Each Zelle In Bereich
If Zelle  "" Then MsgBox Zelle.Column
Set Bereich = Nothing
Next
Next
End Sub
Gruß Jens
Anzeige
AW: gefüllte Zelle in einem Bereich suchen
17.12.2009 16:55:42
Ron
Du hast Recht Jens so geht es. Manchmal sieht man den Wald vor lauter Bäumen nicht.
Danke nochmals für deine Hilfe.
Gruß Ron
Danke für Rückmeldung (oT)
17.12.2009 17:15:37
Jens
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelle in Excel-Bereich suchen und bearbeiten


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und öffne die VBA-Umgebung:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Sub ZelleSuchen()
       Dim Bereich As Range
       Dim Zelle As Range
       Dim loZeile As Long
       Dim loLetzte As Long
    
       loLetzte = 9 ' Anzahl der Zeilen, die durchsucht werden sollen
    
       For loZeile = 1 To loLetzte
           Set Bereich = Range("A" & loZeile & ":E" & loZeile)
           For Each Zelle In Bereich
               If Zelle <> "" Then
                   MsgBox "Gefüllte Zelle gefunden in Spalte: " & Zelle.Column
               End If
           Next Zelle
       Next loZeile
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle ZelleSuchen und klicke auf „Ausführen“.
  5. Überprüfe die Ergebnisse:

    • Eine Meldung zeigt die Spalte jeder gefüllten Zelle an.

Häufige Fehler und Lösungen

  • Fehler: Typenübereinstimmung:

    • Überprüfe, ob die Variablen korrekt deklariert sind und im richtigen Kontext verwendet werden.
  • Fehler: Anwendungs- oder objektdefinierter Fehler:

    • Stelle sicher, dass der angegebene Bereich tatsächlich existiert. Überprüfe die Zeilen- und Spaltenreferenzen.
  • Lösung für leere Zellen:

    • Achte darauf, dass die Bedingung If Zelle <> "" korrekt umgesetzt wird, um leere Zellen zu ignorieren.

Alternative Methoden

  • Verwendung von Find:

    Sub ZelleFinden()
       Dim Bereich As Range
       Dim gefundeneZelle As Range
       Set Bereich = Range("A1:E9")
       Set gefundeneZelle = Bereich.Find("*", LookIn:=xlValues)
    
       If Not gefundeneZelle Is Nothing Then
           MsgBox "Gefundene Zelle: " & gefundeneZelle.Address
       Else
           MsgBox "Keine gefüllte Zelle gefunden."
       End If
    End Sub
  • Verwendung von AutoFilter:
    • Filtern der Daten, um nur gefüllte Zellen anzuzeigen und diese dann zu verarbeiten.

Praktische Beispiele

  • Beispiel 1: Suche nach einem spezifischen Wert in einem Bereich.

    Sub SpezifischenWertSuchen()
      Dim Bereich As Range
      Dim Suchwert As String
      Dim Zelle As Range
    
      Suchwert = "DeinWert"
      Set Bereich = Range("A1:E9")
    
      Set Zelle = Bereich.Find(What:=Suchwert, LookIn:=xlValues)
      If Not Zelle Is Nothing Then
          MsgBox "Wert gefunden in Zelle: " & Zelle.Address
      Else
          MsgBox "Wert nicht gefunden."
      End If
    End Sub
  • Beispiel 2: Speichern der Spaltennummer gefundener Zellen in einem Array.


Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Nutze Debug.Print anstelle von MsgBox, um viele Werte in der Immediate Window zu sehen, ohne ständig Bestätigungsdialoge zu schließen.
  • Optimiere deine Schleifen: Reduziere die Anzahl der Schleifen, wenn möglich, um die Leistung zu verbessern.

FAQ: Häufige Fragen

1. Frage Wie kann ich die erste gefüllte Zelle in jedem Bereich finden?

Antwort: Du kannst die Find-Methode verwenden, um die erste gefüllte Zelle zu finden, wie im Beispiel oben gezeigt.

2. Frage Gibt es eine Möglichkeit, mehrere gefüllte Zellen in einem Array zu speichern?

Antwort: Ja, du kannst ein Array deklarieren und die Adressen oder Spaltennummern gefundener Zellen in einer Schleife speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige