Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Zelle leer dann...

Wenn Zelle leer dann...
02.05.2019 17:20:41
Andy
Hallo Zusammen,
Ich bin auf der Suche nach einem Makro was folgendes macht:
Es soll ab Zelle "A2" (dort steht zB "10A11C") aus dem Sheet "Vergleich" jede Zelle (bis zB "A100") einzeln mit der Spalte "B" aus dem Sheet "Daten" vergleichen. Wenn er dann den genauen Inhalt aus Zelle "A2" aus dem Sheet "Vergleich" in irgend einer Zelle, zB "B15" "Daten" gefunden hat, soll er schauen ob "D15" in Sheet "Daten" eine leere Zelle ist oder nicht. Wenn sie leer ist soll er den Text "Leere Zelle" in "B2" im Sheet "Vergleich" einfügen und wenn nicht, dann Text "Daten vorhanden".
Ich hoffe jemand kann mir dabei helfen.
Vielen Dank im Voraus

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle leer dann...
02.05.2019 17:31:39
Werner
Hallo Andy,
Formel in Blatt "Vergleich" in B2 und bis ans Ende nach unten kopieren so weit, wie Daten in Spalte A vorhanden sind.
=WENN(SVERWEIS($A2;Daten!$B:$D;3;FALSCH)=0;"Leere Zelle";"Daten vorhanden")
Gruß Werner
AW: Wenn Zelle leer dann...
02.05.2019 17:43:10
Nepumuk
Hallo Andy,
so?
Option Explicit

Public Sub ConfirmData()
    Dim avntValues As Variant
    Dim ialngIndex As Long
    Dim objCell As Range
    With Worksheets("Vergleich")
        avntValues = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
        For ialngIndex = 2 To UBound(avntValues, 1)
            Set objCell = Worksheets("Daten").Columns(2).Find(What:=avntValues(ialngIndex, 1), _
                LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=True)
            If Not objCell Is Nothing Then
                If IsEmpty(objCell.Offset(0, 2).Value) Then
                    .Cells(ialngIndex, 4).Value = "Leere Zelle"
                Else
                    .Cells(ialngIndex, 4).Value = "Daten vorhanden"
                End If
            Else
                .Cells(ialngIndex, 4).Value = "nicht gefunden"
            End If
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Wenn Zelle leer dann...
03.05.2019 10:44:11
Andy
Kannst du mir bitte noch erklären wozu hier welcher Befehl dient. Ich würde es gerne nachvollziehen können um evtl es auch das nächste mal selber anwenden zu können und auch um die Formatierung in meiner Excel noch ändern zu können.
Danke im Voraus
AW: Wenn Zelle leer dann...
03.05.2019 11:04:26
Nepumuk
Hallo Andy,
so verständlich?
Public Sub ConfirmData()
    'deklaration der Variablen
    Dim avntValues As Variant
    Dim ialngIndex As Long
    Dim objCell As Range
    'Verweis auf die Tabelle erzeugen
    With Worksheets("Vergleich")
        'Alle Daten aus Zelle bis zur letzten benutzten Zelle ein Array einlesen
        avntValues = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
        'Schleife von Zeile 2 bis zur letzten benutzten Zeile
        For ialngIndex = 2 To UBound(avntValues, 1)
            'Suchen nach den Wert in Tabelle "Daten" Spalte 2 (ganzen Wert vergleichen Groß-Kleinschreibung beachten)
            Set objCell = Worksheets("Daten").Columns(2).Find(What:=avntValues(ialngIndex, 1), _
                LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=True)
            If Not objCell Is Nothing Then
                'Wenn der Wert gefunden wurde
                If IsEmpty(objCell.Offset(0, 2).Value) Then
                    'Wenn in Zelle D der gefundenen Zeile der Wert leer ist
                    .Cells(ialngIndex, 4).Value = "Leere Zelle"
                Else
                    'Wenn in Zelle D der gefundenen Zeile der Wert nicht leer ist
                    .Cells(ialngIndex, 4).Value = "Daten vorhanden"
                End If
            Else
                'Wenn der Wert nicht gefunden wurde
                .Cells(ialngIndex, 4).Value = "nicht gefunden"
            End If
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Wenn Zelle leer dann...
03.05.2019 11:22:20
Andy
Danke.
D.h. wenn ich zB meine Zellen die ich mit der Liste Vergleichen will nicht mehr ab A2 habe sondern in zB F2 müsste ich folgendes schreiben:
avntValues = .Range(.Cells(1, 6), .Cells(.Rows.Count, 1).End(xlUp)).Value2
und wenn die Zelle in der geschaut werden soll ob Inhalt ist oder nicht statt in D in J ist müsste ich folgendes schreiben
If IsEmpty(objCell.Offset(0, 2).Value) Then
'Wenn in Zelle D der gefundenen Zeile der Wert leer ist
.Cells(ialngIndex, 10).Value = "Leere Zelle"
Else
'Wenn in Zelle D der gefundenen Zeile der Wert nicht leer ist
.Cells(ialngIndex, 10).Value = "Daten vorhanden"
?
Für was steht denn der Offset(0,2) nach objCell.?
Anzeige
AW: Wenn Zelle leer dann...
03.05.2019 11:26:40
Nepumuk
Hallo Andy,
nein so:
avntValues = .Range(.Cells(1, 6), .Cells(.Rows.Count, 6).End(xlUp)).Value2

Offset(0,2) bedeutet 0 Zeilen nach unten / oben und zwei Spalten nach rechts.
Gruß
Nepumuk
AW: Wenn Zelle leer dann...
03.05.2019 11:48:35
Andy
Und was müsste ich ändern wenn sich die Zelle, die auf "Leer" oder "Befüllt" geprüft werden muss sich nun in Spalte J befindet?
AW: Wenn Zelle leer dann...
03.05.2019 11:59:59
Nepumuk
Hallo Andy,
na ausgehend von Spalte F Offset(0,4)
erkennst du die Logik nicht?
Gruß
Nepumuk
Anzeige
AW: Wenn Zelle leer dann...
02.05.2019 20:37:09
Andy
Hallo Nepumuk,
das Ergebnis das er etwas in die Zelle einfügt ist schon mal so wie ich mir das Vorstelle, aber der Vergleich scheint noch nicht so richtig zu sein.
Er soll alle Felder ab der Zelle A2, zB bis A500 sich einzelnen anschauen. ZB in A2 steht ABC612, dann soll er diese Zahl mit dem kompletten Block A2:A10000 vergleichen wenn er eine Übereinstimmung gefunden hat, dann die Zeile (zB die Zahl aus Vergleich A2 ist in Daten A400 soll er dann schauen ob in B400 Inhalt ist oder nicht und dann die Texte einfügen, für leer "Keine Daten" und für nicht leer "Daten vorhanden"
AW: Wenn Zelle leer dann...
02.05.2019 21:27:57
Werner
Hallo Andy,
lies dir deinen Eingangsbeitrag und den letzten von dir mal durch.
Fällt dir was auf?
Wo jetzt suchen? In Spalte A oder in Spalte B?
Gruß Werner
Anzeige
AW: Wenn Zelle leer dann...
02.05.2019 21:54:17
Andy
Ehrlich gesagt klingt das jetzt erstmal Gleich. Aber vielleicht überlese ich auch das Entscheidende weil ich es geschrieben habe :-(
Ok nochmal ganz kurz:
Im Sheet "Vergleich" Spalte "A" sind meine Grunddaten. Also alle Inhalte der Zellen A2 bis A10000 sollen einzeln sich angeschaut werden. Nehmen wir jetzt mal eine Zelle aus "Vergleich" "A2". In "A2" steht "ABC123", dieser Inhalt soll mit dem kompletten Block aus "Daten" "A2:A10000" verglichen werden. Wenn nun der Inhalt "ABC123" in Zelle "A155" ist, soll sich dann die Zelle "B155" angeschaut werden in "Daten". Ist diese Leer soll anschliessend in "Vergleich" "B2" "keine Daten" geschrieben werden. Falls sie nicht leer ist soll in "Vergleich" "B2" "Daten vorhanden" geschrieben werden!
Ich hoffe diesmal ist besser zu verstehen?
Das Ganze soll aber mit einem Makro passieren
Vielen Dank schonmal
Anzeige
AW: Wenn Zelle leer dann...
02.05.2019 21:56:33
Werner
Hallo Andy,
warum unbedingt per Makro erschließt sich mir zwar nicht, wenns doch auch mit einer einfachen Formel geht aber gut:
Public Sub Vergleich()
Dim loLetzte As Long
With Worksheets("Vergleich")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(2, 2), .Cells(loLetzte, 2)).FormulaLocal = _
"=WENNFEHLER(WENN(SVERWEIS($A2;Daten!$A:$B;2;FALSCH)=0;""Leere Zelle"";" _
& """Daten vorhanden"");""nicht gefunden"")"
.Range(.Cells(2, 2), .Cells(loLetzte, 2)).Value = _
.Range(.Cells(2, 2), .Cells(loLetzte, 2)).Value
End With
End Sub
Gruß Werner
Anzeige
AW: Wenn Zelle leer dann...
02.05.2019 22:43:19
Andy
Super. Vielen Dank. Nun klappt es einwandfrei.
Ich hab noch eine Frage. Ich habe noch ein kleines Problem.
Ich habe in einer Zelle zB in Spalte A "123456789K" oder C und in Spalte B "---" oder "--K"
Jetzt kann es aber vorkommen das zB in A noch zwei Leerzeichen vor "123456789K" und 1 Leerzeichen danach steht und auch evtl vor "--K" noch vorher oder nachher ein oder zwei Leerzeichen stehen.
Beide sollen dann in Spalte C ohne Leerzeichen stehen zusammengefügt "123456789K--K"
WIe könnte man dieses Problem angehen?
AW: Wenn Zelle leer dann...
02.05.2019 22:50:50
Werner
Hallo Andy,
in C
=GLÄTTEN(A1)&GLÄTTEN(B1)
Gruß Werner
Anzeige
AW: Wenn Zelle leer dann...
02.05.2019 22:59:33
Andy
Kann man diesen Befehl auch hier rein bauen?
Dim i As Long
Sheets("Vergleich").Activate
For i = 2 To 10002
Cells(i, 4) = Cells(i, 2).Value & Cells(i, 3).Value
Next
Das war mein Ursprüngliches Makro um die beiden Zellen zusammenzufügen
AW: Wenn Zelle leer dann...
02.05.2019 23:16:00
Werner
Hallo Andy,
so:
Public Sub bbb()
Dim loLetzte As Long
With Worksheets("Vergleich")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range(.Cells(2, 4), .Cells(loLetzte, 4)).FormulaLocal = _
"=GLÄTTEN(B2)&GLÄTTEN(C2)"
.Range(.Cells(2, 4), .Cells(loLetzte, 4)).Value = _
.Range(.Cells(2, 4), .Cells(loLetzte, 4)).Value
End With
End Sub
Gruß Werner
Anzeige
AW: Wenn Zelle leer dann...
03.05.2019 11:05:40
Andy
Kannst du mir evtl. nochmal erklären wofür was steht. Ich wollte das ganze gerade etwas umschreiben weil ich die Tabelle etwas ändern musste und ich bekomme es leider nicht hin sie zu ändern. Ich würde es gerne besser verstehen wo ich welche Zellen eintrage und wann er was mit was vergleicht.
und weshalb....
03.05.2019 11:10:44
Werner
Hallo Andy,
...machst du erst einmal einen neuen Beitrag auf und fragst dann hier auch noch mal nach?
Gruß Werner

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige