Microsoft Excel

Herbers Excel/VBA-Archiv

Leere Zelle füllen, wenn Bedingung erfüllt

Betrifft: Leere Zelle füllen, wenn Bedingung erfüllt von: Jenny
Geschrieben am: 26.06.2014 11:50:11

Hallo alle zusammen,

ich hoffe jemand hat eine Idee für mich, wie ich das möglichst schnell hinbekomme?
Es geht um folgende Bedingung.

Wenn in 2 aufeinanderfolgenden Zeilen die Texte in den Spalten D und E identisch sind und in denselben Zeilen in Spalte F eine Zelle einen Text beinhaltet (egal in welcher der beiden) und die andere leer ist, hätte ich gerne, dass die andere Zelle in Spalte F mit demselben Text gefüllt wird.

Oder hoffentlich richtig mit Formel ausgedrückt

=ODER(UND(D1=D2;E1=E2;F1="";F2<>"");UND(D1=D2;E1=E2;F1<>"";F2=""))
das ganze auf alle Zeilen kopiert.

Dann soll in den Zellen in denen diese Formel WAHR ausgibt, die leere Zelle in Spalte F mit dem Text der vollen Zelle in Spalte F gefüllt werden.

Nur wie lässt sich das möglichst einfach auf 130.000 Zeilen anwenden?
Hat da jemand eine praktikable Lösung?

Danke und Gruß
Jenny

  

Betrifft: sorry hab noch was vergessen von: Jenny
Geschrieben am: 26.06.2014 11:53:37

sorry hab noch was vergessen.

Es kann auch sein, dass das selbe auch in weiteren Spalten, also G, H usw. auftreten kann, aber nicht in jeder Zeile.

Gruß
Jenny


  

Betrifft: AW: sorry hab noch was vergessen von: Carsten
Geschrieben am: 26.06.2014 16:21:16

Hallo Jenny,

ich weiß nicht genau ob ich deine Frage richtig verstanden hab, abe könntest du das ganze nicht in eine =Wenn() verpacken?
Also so in etwa:
=WENN(ODER(UND(D1=D2;E1=E2;F1="";F2<>"");UND(D1=D2;E1=E2;F1<>"";F2="")); #Wert den du eintragen möchtest;"")
Oder zweigeteilt:
=WENN(UND(D1=D2;E1=E2;F1="";F2<>"");F2;WENN(UND(D1=D2;E1=E2;F1<>"";F2=""));F1;);)

Klappt das?


  

Betrifft: AW: sorry hab noch was vergessen von: Jenny
Geschrieben am: 26.06.2014 16:54:27

naja bin zum Fußball schaun verabredet,

kann jetzt auf die Schnelle nur was ungetestetes schreiben.
Ziel ist nachher, das wenn in 2 aufeinanderfolgenden Zeilen der Text in Spalten D und E gleich ist, auch der Text in Spalte F identisch sein soll.
Das Problem ist jetzt, dass in Spalte F noch einige Texte fehlen, und die gesuchte Formel halt den Text aus der anderen Zeile, in der D und E identisch ist übernehmen soll, wobei das sowohl die erste als auch zweite Zeile sein kann.

In den Fällen, das bereits alle Zellen gefüllt sind, also kein Text fehlt oder in keinem der Zellen ein Text steht, soll das auch so bleiben.

Hoffe das war jetzt verständlicher
Gruß
Jenny


  

Betrifft: AW: sorry hab noch was vergessen von: Jenny
Geschrieben am: 26.06.2014 22:20:32

habe jetzt getestet, leider klappt es nicht ganz.

Der SInn ist ja, dass wenn D1=D2 und E1=E2 dann soll auch F1=F2 sein, wobei in Spalte F ein Teil der Texte fehlt. Was deine Formel nicht berücksichtigt ist, dass der Text der übernommen werden soll, damit ja auch in der vorherigen Zeile stehen kann, nicht nur in der nachfolgenden.

Wenn er in der nachfolgenden steht, scheint die Formel

=WENN(UND(D1=D2;E1=E2;H1="";H2<>"");H2;WENN(UND(D1=D2;E1=E2;H1<>"";H2="");H1;H1)) 
zu funktionieren (aus F ist durch meine Hilfsspalten zum testen H geworden.

Gruß
Jenny


  

Betrifft: AW: sorry hab noch was vergessen von: Robin
Geschrieben am: 27.06.2014 12:42:14

Hey Jenny,

ich wollt helfen, habe losgelegt, gemacht und getan.

Doch dann kam mir die Frage auf, wo fängt das ganze eigentlich an? (Hat "F1" einen Wert?)
Was ist wenn F1 und F2 leer sind oder irgendwo zwischendrin beide leer (F1000 & F1001) sind?

Weil wenn beide leer sind, würde das heißen das alle die danach kommen auf jeden Fall auch leer sind.

Bitte korrigiert mich, wenn ich Falsch liege oder eine Information überlesen habe.

Eventuell könntest du eine kleine Aufstellung von 10 Zeilen zeigen, wie das ganze Aussieht?

MfG Robin


  

Betrifft: AW: sorry hab noch was vergessen von: Jenny
Geschrieben am: 27.06.2014 13:26:52

Hallo Robin,

der Fall dass beide leer sind kommt vor, ist sogar die Regel. Aber in dem Fall würde meine Formel ja auch FALSCH ausgeben, da keine der beiden ODER Bedingungen erfüllt sind.

aber ich kann mir noch vorstellen das Ganze zu vereinfachen, warum bin ich da nicht früher draufgekommen, ich kann die Tabelle ja auch nach D,E,F sortieren, dann bräuchte ich nur noch eine Formel, die in etwa sowas macht

=WENN(UND(C1=C2;D1=D2);F1=F2;F1)

hoffe du verstehst was ich meine. Allerdings weiß ich nicht, wie ich F1=F2 schreiben muss, damit Excel damit was anfangen kann.

Gruß
Jenny


  

Betrifft: AW: sorry hab noch was vergessen von: Robin
Geschrieben am: 27.06.2014 14:21:15

Okay Jenny,

Ich poste einfach mal meinen VBA-Code den ich gebastelt habe, vielleicht hilft er dir ja weiter.
Fand es als VBA-Code wesentlich leichter. *Grins*

Sub pruefe()

    Dim eins As String
    Dim zwei As String
    Dim drei As String
    Dim vier As String
    
    Dim i As Integer
    Dim o As Integer
    Dim x As Integer
    
    Dim wahl1 As String
    Dim wahl2 As String
    
    Dim Check1 As Boolean
    Dim Check2 As Boolean
    Dim Check3 As Boolean
    
    Check1 = False
    Check2 = False
    Check3 = False
    
    i = 1
    o = 2
    x = 1
    
    Do
        
    eins = Cells(i, 3)
    zwei = Cells(o, 3)
    drei = Cells(i, 4)
    vier = Cells(o, 4)
    
    wahl1 = Cells(i, 5)
    wahl2 = Cells(o, 5)
    
    If eins = zwei Then
    
        Check1 = True
        
        If drei = vier Then
        
            Check2 = True
            
            If Check1 = Check2 Then
            
                Check3 = True
                
                If wahl1 = "" Then
                
                    wahl1 = wahl2
                    Cells(i, 5).Value = wahl1
                    
                Else
                
                    If wahl2 = "" Then
                    
                        wahl2 = wahl1
                        Cells(o, 5).Value = wahl2
                    
                    Else
                    End If
                    
                'Exit Sub
                End If
            
            Else
            'Exit Sub
            End If
            
        Else
        'Exit Sub
        End If
        
    Else
    'Exit Sub
    End If
    On Error GoTo Beenden
    
    i = i + 1
    o = o + 1
    x = x + 1
    Loop Until x > 130000
    
Beenden:
    Exit Sub
End Sub
Ich hoffe du verstehst den Code und weist wo du es eventuell anpassen musst, ansonsten raus damit steh dir gern zur Verfügung. (Falls er dir überhaupt weiter hilft.)

Tut mir leid, aber das wäre einfacher mit einem kleinen Beispiel gewesen, für mich zumindest, da das alles so wirr-warr klingt. *smile*

MfG Robin


  

Betrifft: AW: sorry hab noch was vergessen von: Jenny
Geschrieben am: 27.06.2014 18:28:46

Hallo Robin,

in der Tabelle läft im Moment ein anderes Makro, dessen Ausführen mehrere Stunden dauert, daher konnt ich dir keinen Auszug schicken.
stell dir einfach das Ganze so vor,
in Spalte D stehen Vornamen, in Spalte E Nachnamen, in Spalte F ff. Notizen zu den Personen, wobei nur in ca. 30% der Zeilen überhaupt Notizen stehen.
Jetzt sind durch kopieren neue Einträge in Spalte D und E dazugekommen, einige aber mit Leuten, die bereits in der Liste stehen.
Ziel des Makros soll dann sein, dass die Notizen aus den alten Einträgen zu den Personen auf die neuen Einträge zu den Personen übertragen wird. Daher auch mein Nachtrag, dass es auch die weiteren Spalten nach F betreffen kann.

Hoffe es war etwas verständlicher

Jenny
Wenn das Makro mal fertig ist, kümmere ich mich auch mal um eine Beispieldatei


 

Beiträge aus den Excel-Beispielen zum Thema "Leere Zelle füllen, wenn Bedingung erfüllt"