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

Zeichensuch über verschachtelte Wenn/Dann

Zeichensuch über verschachtelte Wenn/Dann
21.05.2019 16:28:51
Gode
Hallo,
ich habe eine Artikelliste (vereinfacht mit Art. Nr und Bezeichnung)
Ich möchte nun über ganz bestimmte Artikel - und zwar die, die entweder "BG60" oder "BG80" in der Bezeichnung enthalten - eine Pivot-Tabelle erstellen.
Hierzu habe ich in einer 3. Spalte folgende Formel angegeben:
=WENN(FINDEN("BG60";B3);"BG60";WENN(FINDEN("BG80";B3);"BG80";""))
Das funktioniert aber nur bei Artikeln, die BG60 enthalten (also die erste Wenn-Bedingung erfüllt ist)
Wo liegt hier der Fehler?
Im Original habe ich sogar 4 Teil-Zeichenfolgen, nach denen ich die Bezeichnung durchsuchen muss ... aber es scheitert ja bereits bei zweien ... :-(
Hier eine kleine Beispieldatei:
https://www.herber.de/bbs/user/129936.xlsx
Vielen Dank für einen Hinweis (evtl. auch für einen besseren, alternativen Lösungsansatz!)
Gruß
Gode

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit einer Matrixfunktion(alität)sformel ...
21.05.2019 16:38:30
neopa
Hallo Gode,
... und einer Definitionsspalte z.B. so:
Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDE
1ArtikelBezeichnung  BG60
24711aaa BG60 K AV6 V KTL *N*BG60 BG80
34712bbb BG74 K AV6 V KTL *N*BG74 BG66
44713fer BG70 K AV6 V KTL *N*  BG74
54714BG75 K AV6 V KTL *N*   
64715BG80 K+M AV9 v KTL *N*BG80  
74716ssdsd BG74 K+M AV9 v KTL *N*BG74  
84717BG80 K+M AV9 v KTL *N*BG80  
94718BG77 K+M AV9 v KTL *N*   
10     
11     

ZelleFormel
C2=WENNFEHLER(INDEX(E:E;AGGREGAT(15;6;ZEILE(E$1:E$4)/FINDEN(E$1:E$4;B2)^0;1));"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
AW: Zeichensuch über verschachtelte Wenn/Dann
21.05.2019 16:41:19
{Boris}
Hi,
FINDEN liefert den Fehlerwert #WERT! in dem Moment, wo nichts gefunden wird.
Ist BG60 nicht vorhanden, wird die nachfolgende Sonst-Bedingung der WENN-Funktion ignoriert, da #WERT! der ersten FINDEN-Funktion dominant ist.
Du könntest alternativ ZÄHLENWENN verwenden:
C2 (und dann runterkopieren):
=WENN(ZÄHLENWENN(B2;"*BG60*");"BG60";WENN(ZÄHLENWENN(B2;"*BG80*");"BG80";""))
Aber ich hab nicht ganz verstanden, was Dein genaues Ziel ist. Demnach wird es sicher noch eine viel bessere Lösung geben.
VG, Boris
AW: Zeichensuch über verschachtelte Wenn/Dann
21.05.2019 17:40:03
Gode
Hallo,
vielen Dank Euch beiden ... funktionieren beide Ansätze super.
Werner's Lösung hat den Vorteil, dass ich bei Erweiterung lediglich einen Eintrag in Spalte E vornehmen muss ... allerdings den Nachteil, dass ich eigentlich die Formel nicht so recht verstehe ;-)
@Boris:
Ich muss über die so separierten Artikel eine Pivottabelle anlegen (wie gesagt, die Originaldatei hat noch wesentlich mehr Spalten mit anderen Informationen, die dann auszuwerten sind.
Da ich in der Pivottablle diese Bezeichnungen nicht so flexibel wie benötigt filtern kann, hatte ich den gedanken über eine neue Spalte, in der nur die "relevanten" Artikel einen Wert bekommen.
Ich hoffe das war jetzt etwas verständlicher.
Also vielen Dank nochmal euch beiden!
Gruß
Gode
Anzeige
AW: auch mit ZÄHLENWENN() und INDEX() ...
21.05.2019 19:10:34
neopa
Hallo Gode,
... kannst Du ohne eine klassische Matrixformel und ohne WENN()-Schachtelungen eine flexible Erweiterung der auszuwertenden Datenwerte vornehmen.
In C2:
=WENNFEHLER(INDEX(E:E;VERGLEICH(1;INDEX(ZÄHLENWENN(B2;"*"&E$1:E$11&"*")*(E$1:E$11&gt0););0));"")
Zu meiner ersten Formel noch die kleine Erläuterung, dass FINDEN() ja im Falle des Nichtfindens einen Fehlerwert erzeugt und im Falle des Findens die Stellenzahl ausgibt, wo der/die Suchtext(e) im Text gefunden werden. Dies kann eine 1 sein, wie das bei B8 der Fall ist oder eben auch größer 1 wie für B2.
Durch ^0 also das Potenzieren mit 0, wird daraus aber auf jeden Fall eine 1. Dadurch ergibt sich die Teilmatrix des Divisors zu Fehlerwerten und einer evtl. 1 (wenn nicht ergibt sich ein Fehlerwert für AGGREGAT() und damit auch für INDEX() welches durch WENNFEHLER() abgefangen wird).
Da durch die AGGREGAT()-Funktion infolge des 2. Arguments (der 6) Fehlerwerte ignoriert werden, ergibt sich an der Stelle wo die 1 in der Teilmatrix ermittelt wurde, eine Division der entsprechenden Zeilennummer aus ZEILE(E$1:E$4) geteilt durch 1. Somit dann als Ergebnis des AGGREGAT()-Formelteils die Zeilennummer der Suchwerte in Spalte E, welche dann wiederum als 2. Argument der INDEX() Funktion übergeben wird und dadurch das gesuchte Ergebnis ermittelt wird.
Gruß Werner
.. , - ...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige