Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1684to1688
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

Funktion optimieren / Zählenwenn

Funktion optimieren / Zählenwenn
01.04.2019 10:22:40
erichm
Hallo,
ich nutze sehr oft eine Formel mit der eine Spalte ab Zeile 2 ausgewertet wird, wann ein Zellinhalt das erste mal (= Original) oder das zweite mal oder öfters vorkommt (= doppelt):
in B2 und nach unten kopiert: =WENN(ZÄHLENWENN(A$2:A2;A2)=1;"Original";"doppelt")
Da teilweise Spalten mit mehreren Tausend Zeilen auszuwerten sind, wäre eine VBA-Lösung besser. Hierzu habe ich zunächst folgende Funktion erstellt:
Function Original(rng As Range)
Original = IIf(WorksheetFunction.CountIf(Range("A$2:A2"), rng) = 1, "Original", "doppelt" _
)
End Function
in B2 und nach unten kopiert: =Original(A2)
Das klappt aber natürlich nicht, weil der "Rangebereich" A$2:A2 nach unten nicht "mitläuft". Leider sind zahlreiche Versuche, den Rangebereich anzupassen, gescheitert.
Besten Dank für eine Hilfe!
mfg

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

Betreff
Datum
Anwender
Anzeige
AW: Funktion optimieren / Zählenwenn
01.04.2019 10:33:41
ChrisL
Hi
VBA erachte ich zwar nicht als besser, aber so gehts...
Function Original(rng As Range) As String
Original = IIf(WorksheetFunction.CountIf(Range("A2:" & rng.Address), rng) = 1, _
"Original", "doppelt")
End Function
cu
Chris
AW: Funktion optimieren / Zählenwenn
02.04.2019 10:16:44
erichm
Danke - stimmt, das bringt keinen großen Mehrwert. Da müsste ich mir eine VBA-Lösung bauen, mit der die Ergebnisse bereits in Spalte B eingetragen werden.
mfg
AW: Funktion optimieren / Zählenwenn
01.04.2019 10:42:26
Daniel
Hi
das "mitlaufen" könntest du so umsetzen: .Countif(Range("A2:A" & rng.Row), rng)
naja, so wird das auch nicht viel schneller.
Ob das ZählenWenn jetzt in der Zelle steht, oder von VBA ausgeführt wird, ist auch egal.
schneller wäre beispielsweise folgendes:
1. Liste nach Spalte 2 sortieren
2. per Formel das erste auftreten anzeigen lassen (Formel für Zeile 2, da Zeile 1 Überschrift):
=Wenn(B2=B1;"doppelt";"Original")
3. die Formel kopieren und als Wert einfügen
4. Liste in die ursprüngliche Reihenfolge zurücksortieren
Excel ist im Sortieren sehr schnell, das sollte man ausnutzen.
In der Sortierten Liste musst du einen Wert nur mit dem direkt darüber liegenden Wert vergleichen, um herauszufinden, ob er Original oder Duplikat ist, in der unsortierten Liste mit allen darüberliegenden.
Gruß Daniel
Anzeige
AW: Funktion optimieren / Zählenwenn
02.04.2019 10:15:24
erichm
Danke für die Hinweise. Da die Spalte A keine sortierte Struktur hat, werde ich zunächst
- in Spalte C Zeilennummern als Sortierkriterium vergeben
- dann die Spalten A bis C aufsteigend sortieren (nach Spalte A)
- dann den Formelvorschlag in Spalte B anwenden und
- dann wieder nach Spalte C aufsteigend sortieren.
mfg
Alternative PowerQuery
01.04.2019 10:45:12
ChrisL
Bei mehreren tausend Zeilen wäre PQ eine Option.
https://www.herber.de/bbs/user/128806.xlsx
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Gruppierte Zeilen" = Table.Group(Quelle, {"Wert"}, {{"Anzahl", each Table.RowCount(_), type number}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Gruppierte Zeilen", "Auswertung", each if [Anzahl] > 1 then "doppelt" else "Original"),
#"Entfernte Spalten" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Anzahl"})
in
#"Entfernte Spalten"
Anzeige
AW: Alternative PowerQuery
02.04.2019 10:29:38
erichm
Hallo ChrisL,
danke - das ist wirklich eine Option; derzeit kenne ich PQ aber noch nicht näher.
Was bedeutet die Beschreibung nach "let"?
Danke.
mfg
AW: Alternative PowerQuery
02.04.2019 14:04:48
ChrisL
Hi
Mit dem Code musst du dich nicht zwingend beschäftigen. Folgender Link (von Luschi) führt zu einem Tutorial:
https://de.linkedin.com/learning/power-query-fur-fortgeschrittene-excel-und-power-bi-desktop?trk=featured-topics-card_learning_card_title&upsellOrderOrigin=trk_default_learning
A Power Query M formula language query is composed of formula expression steps that create a mashup query. A formula expression can be evaluated (computed), yielding a value. The let expression encapsulates a set of values to be computed, assigned names, and then used in a subsequent expression that follows the in statement. For example, a let expression could contain a Source variable that equals the value of Text.Proper() and yields a text value in proper case.
https://docs.microsoft.com/en-us/powerquery-m/expressions-values-and-let-expression
Mit let kann ein einzelner Ausdruck (single expression) in mehrere Teile aufgeteilt werden.
cu
Chris
Anzeige
Danke für die Infos und den LINK! o.w.T.
04.04.2019 09:07:13
erichm
....

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige