Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1428to1432
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
VBA: Wenn dann funktion
04.06.2015 19:13:23
Emre
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Wenn dann funktion
04.06.2015 19:21:54
Daniel
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

AW: VBA: Wenn dann funktion
04.06.2015 20:46:55
Emre
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?

Anzeige
AW: VBA: Wenn dann funktion
04.06.2015 20:58:25
Werner
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

AW: VBA: Wenn dann funktion
04.06.2015 21:23:02
Emre
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

Anzeige
AW: VBA: Wenn dann funktion
04.06.2015 21:20:01
Daniel
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

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

AW: VBA: Wenn dann funktion
04.06.2015 21:21:26
DD
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

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

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige