Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1836to1840
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

Zählenwenn Formel ersetzen mit Makro

Zählenwenn Formel ersetzen mit Makro
09.07.2021 07:28:56
Daniel
Hallo Zusammen,
ich benötige bitte etwas Hilfe, da meine Kenntnisse nicht ganz ausreichen.
Ausgangsituation:
Excel Workbook mit 2 Blättern
Blatt 1 enthält Spalte A mit festen Daten
Blatt 2 ist variabel und wird immer wieder geändert, gelöscht, angepasst usw.
Nun prüfe ich auf Blatt 2 ob die Werte in Spalte B irgendwo in Spalte A auf Blatt 1 vorkommen.
Falls ja, wird in Blatt 2 in Spalte E eine 1 (wenn vorhanden) oder eine 0 (wenn nicht vorhanden) eingetragen.
Anfangs habe ich das manuell gemacht und meine Formel nach unten gezogen;
mittlerweile füge ich die Formel per Makro ein, was auch gut funktioniert.
Im Letzten Schritt ersetze ich nun in Blatt 2 die Spalte B mit E
Hier mein Makro:

Sub machs()
Dim Zeilenende As Long
Dim Zeilenende2 As Long
'Zielliste
With Sheets("Testliste")
Zeilenende2 = Sheets("Artikelliste").Cells(Rows.Count, 1).End(xlUp).Row
Zeilenende = .Cells(.Rows.Count, 1).End(xlUp).Row
' in E wird der Wert 0 oder 1 eingetragen
' ist der Wert aus B in der Artikelliste ab A2 bis Zeilenende vorhanden dann 1 ansonsten 0
.Range("E2:E" & Zeilenende).FormulaLocal = "=--(ZÄHLENWENN(Artikelliste!$A$2:$A$" & Zeilenende2 & ";B2)>0)"
End With
End Sub
Nun möchte ich das gerne vollständig als VBA und nicht als Formel einfügen UND
ist es möglich, direkt in die Spalte B die 0 oder 1 einzutragen?
Mit meinem Makro ist das leider nicht möglich da sonst alle Zellen mit 0 befüllt werden

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählenwenn Formel ersetzen mit Makro
09.07.2021 08:24:38
ChrisL
Hi
Mit Formel und abschliessendem Ersetzen von Formel durch Wert bist du schneller. Andernfalls musst die Zellen einzeln durchlaufen:

Sub machs()
Dim Zelle As Range
With Sheets("Testliste")
For Each Zelle In .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
Zelle.Offset(0, 1) = IIf(WorksheetFunction.CountIf(Worksheets("Artikelliste").Columns(1), Zelle), 1, 0)
Next Zelle
End With
End Sub
cu
Chris
AW: Zählenwenn Formel ersetzen mit Makro
09.07.2021 08:40:30
Stefan
Hallo :)

Option Explicit
Sub machs()
Dim lzeile As Long
Dim lzeile2 As Long
For lzeile = 1 To Sheets("Testliste").Cells(Rows.Count, 2).End(xlUp).Row
For lzeile2 = 1 To Sheets("Artikelliste").Cells(Rows.Count, 1).End(xlUp).Row
If UCase(Sheets("Testliste").Cells(lzeile, 2)) = UCase(Sheets("Artikelliste").Cells(lzeile2, 1)) Then 'Durch UCase wird die Groß und Kleinschreibung nicht beachtet
Sheets("Testliste").Cells(lzeile, 2).Value = 1 'Es wird in in Spalte B der bisherige Eintrag durch 1 oder 0 überschrieben
else Sheets("Testliste").Cells(lzeile, 2).Value =
End If
Next
Next
End Sub
Falls ich das mit dem Überschreiben in Spalte B (Testliste) falsch verstanden hab, einfach in beiden Codezeilen die "2" erhöhen bis zu der Spalte wo die Auswertung hinsoll.
Code ist durch die fehlende Beispieldatei ungetestet :)
Viel Erfolg und freundliche Grüße
Stefan
Anzeige
AW: Zählenwenn Formel ersetzen mit Makro
09.07.2021 08:47:48
Daniel
Hi
wie lang sind denn deine Listen?
Gruß Daniel
AW: Zählenwenn Formel ersetzen mit Makro
09.07.2021 11:39:13
Daniel
Schonmal Danke für die bisherige Hilfe.
Die Liste mit den festen Daten beinhaltet derzeit 500 Zeilen ... wachsend - irgendwann können da mehrere tausend Einträge drinnen sein.
Die Liste, welche geprüft wird beinhaltet je nach Verarbeitungszweck zwischen 5 und 300 Zeilen.
Wobei mir jetzt auch ein Gedankenfehler aufgefallen ist und ich von vorne neu denken muss.
Wenn mein Zellwert aus der "Testliste" in der "Artikelliste" vorkommt und eine 1 gesetzt wird, ist das ja super;
aber anstatt der 0 benötige ich den eigentlichen Zellwert. dieser soll dann nicht 0 sein.
Jetzt weis ich nur nicht, ob ich das mit dem ZÄHLENWENN auch abbilden kann
Anzeige
AW: Zählenwenn Formel ersetzen mit Makro
09.07.2021 12:06:42
Daniel
Hi
geht schon, nur halt dann mit normalen WENN und nicht mit dem Rumgerechne, was manche anstelle dem WENN bevorzugen:
=Wenn(ZählenWenn(Artikelliste;Zellwert);1;Zellwert)
wenn die Datenmengen größer werden, kann das mit dem ZählenWenn etwas langsam werden.
etwas schneller wäre dann:
=Wenn(IstZahl(Vergleich(Zellwert;Artikelliste;0));1;Zellwert)
bei sehr großen Datenmengen (mehrere tausend Zeilen) gehts so am schnellsten:
1. Artikelliste aufsteigend sortieren
2. =Wenn(SVerweis(Zellwert;Artikelliste;1;wahr)=Zellwert;1;Zellwert)
Gruß Daniel
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige