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

Zeilen zählen mit nur einem Fund pro Zeile

Zeilen zählen mit nur einem Fund pro Zeile
27.02.2024 09:22:40
Flynn
Hallo ihr Lieben,
ich sitze nun seit 9 Stunden an einer einzigen Formel. Auch Chat GPT habe ich befragt und 15 Formeln getestet. Auch die Youtubevideos, immer das selbe Ergebnis, nämlich das "Zeilenduplikate" aber keine Spaltenduplikate beim Zählen ausgelassen werden.

In meiner Tabelle gibt es mehrere Spalten von denen 3 einen Namen beinhalten können aber nicht müssen. Es können aber auch in 2 oder 3 Spalten der selbe Name auftauchen innerhalb der selben Zeile. Ich möchte aber das er pro Zeile maximal +1 zählt wenn der Name gefunden wird.
Wenn also in Zeile 1 der Name 3x vorkommt und in Zeile 2 der Name 1x vorkommt, dann soll das Ergebnis 2 sein.

=ZÄHLENWENN(spalte5;[@[ID Name]])+ZÄHLENWENN(spalte6;[@[ID Name]])+ZÄHLENWENN(spalte7;[@[Aktuelles Team]])

Das stupide Addieren funktioniert natürlich, aber er zählt vertikal das ist das Problem. Ich brauche eine horizontale Suchabfrage. Sowas wie suche in erster Zeile Spalte 5 dann 6 dann 7 dann zur nächsten Zeile und sobald Spalte=Suchwort, zähle +1 und ignoriere die nächste Spalte und suche in der nächsten Zeile.

danke schonmal :)

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen zählen mit nur einem Fund pro Zeile
27.02.2024 10:16:43
daniel
Hi

vielleicht so:

=Summenprodukt(1*istzahl(Finden("DeinName", Spalte5&Spalte6&Spalte7)))

Gruß Daniel
AW: Zeilen zählen mit nur einem Fund pro Zeile
27.02.2024 20:54:40
Flynn
Auch dir ebenso danke dafür. Beide eurer Vorschläge funktionieren.
Ich muss das ganze jetzt noch erweitern :)
AW: Zeilen zählen mit nur einem Fund pro Zeile
27.02.2024 10:44:44
Onur
Mach eine Hilsspalte, die prüft, ob das Wort in der Zeile vorkommt und zähle diese Spalte.
AW: alternativ mit Hilfe von MMULT() ...
27.02.2024 13:01:48
neopa C
Hallo Flynn,

... wenn Du in einen Spaltenbereich der drei Spalten 5 bis 7 z.B. in E1:G99 das "Suchwort" ohne Zeilenduplikate zählen willst, würde ich folgende Formel bevorzugen:
=SUMMENPRODUKT(--(MMULT(--(E1:G99="hier");{1;1;1})>1))

Wenn mehr Spalten zu durchsuchen sind, muß die konstante Matrix entsprechend angepaßt werden. Bei 4 Spalten so: {1;1;1;1}, bei vielen Spalten, z.B. bei 12 dann einfacher so: ZEILE(A1:A12)^0

Gruß Werner
.. , - ...
Anzeige
AW: sorry, Schreibfehler: nicht ... >1) sondern ... >0) owT
27.02.2024 14:41:06
neopa C
Gruß Werner
.. , - ...
AW: alternativ mit Hilfe von MMULT() ...
27.02.2024 20:53:28
Flynn
Lieben dank, das funktioniert. Das MMULT Array war mir neu, sieht aber gut aus eine zweidimensionale Suchmaske über XY zu konfigurieren.
Leider wird es nun etwas komplexer, denn in Wahrheit wird nur in Spalte 5+6 nach dem Wort gesucht, in Spalte 7 jedoch nach einer Nummer.
Aber auch diese muss an eine ODER Bedingung verknüpft sein. Das bedeutet...
Suche Wort1 in Spalte5 ODER Spalte6 ODER suche Nummer1 in Spalte7 = dann zähle +1
Suche in nächster Zeile....

Mein Versuch hier ist leider nicht erfolgreich gewesen.
=SUMMENPRODUKT(--(MMULT(--(spalte5:spalte7=ODER([@[ID Name]];[@[Aktuelles Team]]));{1;1;1})>0))


auch ein mehrdimensionales Array funktionierte nicht
=SUMMENPRODUKT(--(MMULT(--(spalte7=[@[Aktuelles Team]]);{1})>0);--(MMULT(--(spalte5:spalte6=[@[ID Name]]);{1;1})>0);{1;1;1;1;1;1})


obwohl die Arrayausgabe schon richtig aussieht. Das Array für die Nummersuche ist {0;1;1;0;0;0} die vom Wortsuche ist {1;1;0;1;1;0}
Aber das Ergebnis ist 1 und nicht 5 wie es sollte. Das heisst es handelt sich hier um eine UND Abfrage und keine ODER. Summenprodukt zählt also nur wenn beide Arraykeys den Wert 1 haben. Ich bräuchte das jetzt als ODER Abfrage.
Anzeige
AW: alternativ mit Hilfe von MMULT() ...
27.02.2024 21:44:37
Flynn
Ups, meine Formel war eh quatsch. Ich habe eine statische 6 Zeilen Maske vorgegeben, aber meine Testtabelle wird ja wachsen.
Zeig doch mal bitte...
27.02.2024 22:15:09
{Boris}
Hi,

...Deine Beispieldatei mit den echten Anforderungen.

VG, Boris
AW: nachgefragt zu Deiner Datei und Ergebnisvorgabe ...
28.02.2024 08:02:01
neopa C
Hallo Flynn,

... Deine definierten zusätzlichen benannten Bereiche im Namensmanager der "intelligenten" Tabelle namens: tab_event sind nicht notwendig Und wieso kommst Du für Hans Wolf auf 3? Meine nachfolgende Formel wie meine "händische" Zählung kommt nur auf 1?

In D2: =SUMMENPRODUKT(--(MMULT(--(tab_events[[Einzelevent1]:[Einzelevent2]]=TEXT([@ID];"000 ")&[@Name]);{1;1})>0)*tab_events[Gruppen Event])

Gruß Werner
.. , - ...
Anzeige
AW: nachgefragt zu Deiner Datei und Ergebnisvorgabe ...
28.02.2024 21:38:36
Flynn
Hallo Werner, vielen lieben Dank für deine Mühe.
Ich weiss ich muss die Namensumgebung nicht erstellen, aber ich mag Struktur und zu sehen worauf ich verweise. Bei großen Tabs werd ich Irre wenn ich nur noch Buchstaben und Zahlen sehe. Ausserdem arbeite ich viel mit Asuwahllisten (Datenüberprüfung) und dort werden beim pickup immer Koordinaten gewählt und keine Spaltennamen.
Und als Quellenverweis "tab_events[Einzelevent2]" lässt Excel nicht zu. Dafür muss man dann wieder INDIREKT benutzen. Und wenn du das machst, ist dein Quellenverweis statisch, der korrigiert sich nicht wenn du den Spaltennamen bzw. Headline umbenennst. Damit ist ist Auswahlliste kaputt.
Wenn ich aber den Namensmanager gebrauche, kann ich bei Datenüberprüfung ohne INDIREKT einfach den Spaltennamen eingeben, fertig. Und es bleibt intakt selbst wenn ich die Kopfzeile ändere.

Aber zum Problem, ich habe deine Formel getestet. Leider zählt er falsch.
Hans Wolf muss "3" sein. In Zeile 2+3+4 kommt Hans vor, sowie seine Teamnummer"2" kommt in Zeile 4 vor. Er nimmt also an 3 Tagen teil.
Ich sehe gerade dich hat die Gruppenteilnahme verwirrt, tut mir leid. Du hast diese als Multiplikator benutzt.
Die Gruppenteilnahme ist eigentlich nichts anderes als eine Teilnahme der Person die zur Gruppe gehört.
Wenn in Zeile 3 Gruppenevent das Team No. 2 steht, nehmen alle Personen teil die zu Team No.2 angehören.
In Zeile 7 zb. siehst du das Team No.2 teilnimmt und Markus Blume im Einzelevent 1 und 2. Hier darf die Formel aber nur "+1" zählen, denn es ist völlig egal wie viele Events er teilnimmt in Zeile 7, es zählt nur der gesamte Tag als solches.

Die Formel muss also heissen wie:
Suche Markus Teamnummer(aus C3) in erster Tabellzeile bei Spalte (B2), wenn falsch dann suche in nächster Spalte (C2) den ID Namen 001 Markus(aus F3), wenn falsch dann nächste Spalte (D2), wenn falsch dann =0
Weiter suchen in zweiter Zeile... etc. etc. wenn mindestens eine von drei Bedingungen WAHR dann "+1"
Weiter in dritter Zeile....

Anzeige
AW: nachgefragt zu Deiner Datei und Ergebnisvorgabe ...
29.02.2024 05:49:47
Flynn
Moin, ich habe soebend die korrekte Formel kreiert. Warum das jetzt so lange gedauert hat versteh ich nicht, ich kann dir PHP und Javascript programmieren aber keine blöde Excel Formel, unglaublich.

Die korrekte Formel zu meiner Beispieldatei, für die Zelle D2:D5 ist...
=SUMME(WENN(((MMULT(--(tab_events[Gruppen Event]=[@Teamnummer]);{1})>0)+(MMULT(--(tab_events[Einzelevent1]=[@[ID Name]]);{1})>0)+(MMULT(--(tab_events[Einzelevent2]=[@[ID Name]]);{1})>0)) > 0;1;0))


Ich frage jede Spalte einzeln hab und summiere anschließend die Arraywerte zu einem neuen Array und limitiere Werte höher als 1 auf 1. Somit bekomme ich für jede Zeile eine "1" wenn eine der drei Bedingungen zusagt, also wenn entweder die Teamnummer übereinstimmt oder der Name in einer der durchsuchten Spalten.
Nochmal Danke Werner für den richtigen Denkanstoß.

Könnte mir vorstellen das bei großen Tabellen das ganze nicht so performant ist bei drei vollen Arraywerten für jede ausführende Zelle.
Wenn es eleganter geht, dann bin ich ganz Ohr für Vorschläge.
LG
Anzeige
AW: jetzt verständlicher, was Du berechnen möchtest ...
01.03.2024 16:38:54
neopa C
Hallo Flynn,

... dies läßt sich dann aber mit folgender Formel etwas einfacher realisieren:

=SUMMENPRODUKT(--((MMULT(--(tab_events[[Einzelevent1]:[Einzelevent2]]=[@[ID Name]]);{1;1})+(tab_events[Gruppen Event]=[@Teamnummer]))>0))

Formeln mit MMULT() sind normalerweise sehr performant.


Gruß Werner
.. , - ...
AW: jetzt verständlicher, was Du berechnen möchtest ...
01.03.2024 20:05:41
Flynn
Besten Dank Werner. Das sieht sehr gut aus. Wenn auch plötzlich wieder so simple, einfach addiert... ich hatte versucht mehrere MMULT miteinander zu addieren, deswegen ging das nicht :D

Dann kann ich das Thema als erfolgreich abgeschlossen nennen.
LG
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige