VBA: Wenn dann funktion

Bild

Betrifft: VBA: Wenn dann funktion
von: Emre
Geschrieben am: 04.06.2015 19:13:23

Und hallo noch einmal,
ich hoffe mal das ist meine letzte Frage für heute. Ich habe 3 Tabellenblätter, aus Tabelle 1 und 2 welche meistens unterschiedliche Daten haben wird die Tabelle 3. Einen Button für Duplikate löschen habe ich bereits. Nun möchte ich aber das in Tabelle 3, die Werte von der Tabelle 2 die nicht in Tabelle 1 vorhanden sind ein x in einer extra Spalte bekommen. So wie bei einer Namensliste fehlende Accounts. Einen Code habe ich mir selber zusammengebastelt von hier und da aber der zeigt mir sofort Fehler an.
Coder ist folgender:
Sub wenndann()
If Worksheets("Tabelle1").Range("A2") <> Worksheets("Tabelle2").Range("A2")
Then Worksheets("Tabelle3").Range("A2").Value = "x" Else Worksheets("Tabelle3").Range("A2").Value = ""
End If

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Daniel
Geschrieben am: 04.06.2015 19:21:54
Hi
brauchst du kein Makro, sonden folgende Formel in Tabelle3:

=Wenn(ZählenWenn(Tabelle2!A:A;A2)>0;Wenn(ZählenWenn(Tabelle1!A:A;A2)=0;"x";"");"")
wenns unbedingt ein Makro sein soll, kannst du ja eines schreiben, welches diese Formel in die Hifsspalte einträgt.
Gruß Daniel

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Emre
Geschrieben am: 04.06.2015 20:46:55
Hallo,
danke für die Formel genau das was ich suchte.
Aber ich kriegs nicht hin die Formel ins Makro zu schreiben...

=COUNT(COUNTIF(Tabelle2!C[-9],Tabelle2!RC[-9]) > 0;COUNT(COUNTIF(Tabelle1!C[-9],Tabelle1!RC[-9]) = 0;  "x";"");"") 
der Code will nicht laufen. Was mach ich denn falsch?

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Werner
Geschrieben am: 04.06.2015 20:58:25
Hallo Emre,
die Formel muss in Gänsefüsschen

"=Formel.......)"
Und alle Gänsefüsschen innerhalb der Formel müssen doppelt sein.
""x"" für das x bzw. """" für das Leer
Gruß Werner

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Emre
Geschrieben am: 04.06.2015 21:23:02
Hallo Werner,
danke für den Tipp. Habe das jetzt so gemacht und kriege diesmal einen Laufzeitfehler. Habe ich vielleicht die Formel falsch umgewandelt? Und kann ich die Formel solange in der Spalte J laufen lassen wie die Spalten A sind? Also das die Formel nicht nur in J1 ausgeführt wird, sondern solange bis die Spalten A fertig sind.

Sub x()
   Worksheets(3).Cells("J2").FormulaR1C1 = "=COUNT(COUNTIF(Tabelle2!C[-9],Tabelle2!RC[-9]) > 0; _
COUNT(COUNTIF(Tabelle1!C[-9],Tabelle1!RC[-9]) = 0;  ""x"";"""");"")"
End Sub


Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Daniel
Geschrieben am: 04.06.2015 21:20:01
HI
gib die Fromel doch direkt in die Zelle ein und zeichne mit dem Recorder auf.
wichtig ist auch, dass du dich entscheidest, in welcher Form du die Formel in die Zelle schreibst, es gibt da 4 Möglichkeiten:
.Formula: englisch mit A1-Zeilbezügen
.FormulaR1C1: englisch mit R1C1-Zellbezügen
.FormulaLocal: deutsch mit A1-Zellbezügen
.FormulaR1C1Local: deutsch mit Z1S1 Zellbezügen.
für die Programmierung ist .FormulaR1C1 das übliche und meistens auch das beste.
Das zeichnet auch der Recorder auf.
wenn du selber programmieren willst, musst du halt folgendes beachten:
1. Dopplung der Anführungszeichen, die Bestandteil der Formel sind (hat Werner ja schon beschriben.
2. je nach Sprachversion musst du nicht nur die Funktionsnamen anpassen, sondern auch beachten , dass die Parametertrennzeichen unterschiedlich sind (Komma/Semikolon) und bei Kommazahlen auch das Dezimalzeichen (Punkt/Komma)
Das englischen Pendant du WENN ist IF und nicht COUNT.
korrek müsste deine Programmzeiel so aussehen:

Range(...).FormulaR1C1 = "=IF(CountIf(Tabelle2!C1,RC1)>0,If(CountIf(Tabelle1!C1,RC1)=0,""x"",""""),"""")"
Gruß Dniel

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Emre
Geschrieben am: 04.06.2015 23:06:33
Vielen Dank Daniel, hat endlich geklappt. :)

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: DD
Geschrieben am: 04.06.2015 21:21:26
Hallo Emre,
vielleicht hilft dir dieses weiter.
Option Explicit

Sub wenndann()
Dim rngtab1 As Object, rngtab2 As Object, rngtab3 As Object
Dim lngRow1 As Long, lngRow2 As Long, lngMaxRow As Long, n As Long
Set rngtab1 = Worksheets("Tabelle1").Range("A:A")
Set rngtab2 = Worksheets("Tabelle2").Range("A:A")
Set rngtab3 = Worksheets("Tabelle3").Range("A:A")
lngRow1 = Worksheets("Tabelle1").Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row
lngRow2 = Worksheets("Tabelle2").Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row
lngMaxRow = WorksheetFunction.Max(lngRow1, lngRow2)
    For n = 1 To lngMaxRow
        If rngtab1.Cells(n, 1) <> rngtab2.Cells(n, 1) Then
            rngtab3.Cells(n, 1) = "X"
        Else
            rngtab3.Cells(n, 1) = ""
        End If
    Next n
End Sub

Gruß Dieter_D

Bild

Betrifft: AW: VBA: Wenn dann funktion
von: Emre
Geschrieben am: 04.06.2015 23:07:17
Auch dir ein großes Dankeschön Dieter. Klappt super :)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA: Wenn dann funktion"