SUMMENPRODUKT mit Text als Ergebnis
Hallo,
ich möchte so eine Art Kodierung in Excel machen.
Man gibt 2 Begriffe vor und Excel bestimmt den Code dafür.
Beispiel:
Spalte A = Klasse
Spalte B = Kategorie
Spalte C = Code dafür
Klasse Kategorie Code
Hund Schäferhund HS12
Hund Mops HD13
Hund Dackel HK11
Katze Perser KE99
Katze Siam KS03
Maus Wühlmaus AW22
Maus Feldmaus DE88
Maus Hausmaus AH33
Wenn ich jetzt in Spalte E und F die zwei Begriffe Katze und Perser vorgebe, sollte in Spalte G der Code KS03 erscheinen.
Wenn man die Funktion SUMMENPRODUKT so wie mit Zahlen anwendet, kommt #WERT als Ergebnis, da WAHR * WAHR * Text = #WERT ergibt.
Man kann aber noch etlich andere Varianten versuchen, die dann zumindest mal 0 anstatt #WERT im Ergebnis bringen.
Aber das reicht mir natürlich noch nicht, ich möchte schon den Code dafür haben.
Kann mir da mal jemand auf die Sprünge helfen?
Gruß Distel
PS: Im Bild sieht man schön, dass das Ganze mit Zahlen als Code wunderbar funktioniert, nur eben nicht mit Text im Code.
3 Antworten
Bau einfach einen INDEX drumherum:
=INDEX($C$1:$C$9;SUMMENPRODUKT(($A$2:$A$9=E3)*($B$2:$B$9=F3)*ZEILE($C$2:$C$9)))
Sollte klappen. Oder?
da haben wir uns mal wieder zeitlich überschnitten, ebenso wie mit DeeDee!
=Index(C:C;summenprodukt(Nicht(istfehler(finden("Hu";A1:A999;1))) *Nicht(istfehler(finden("Dac";A1:A999;1)))*Zeile(A1:A999))
sollte Kurzeingaben mit Unterscheidung Groß/Klein ermöglichen (Suchen: keine Unterscheidung).
Bei Dackel muss zumindrest das c mit dazu, da es ja auch den Dalmatiner gibt, und wenn der Dachshund ebenfalls in der Liste auftaucht, braucht man sogar Dack.
Hu und Dack können auch in zwei getrennten Zellen stehen
Habs jetzt zwar nicht ausprobiert, aber hab das schon öfter so oder so ähnlich gemacht.
Korrektur: der 2. Teil muss natürlich ...*Nicht(istfehler(finden("Dac";B1:B999;1)))*... heissen!
(also zweite Spalte B, nicht 2 mal A)
sehe grade die AW von DeeDee: ja, so gehts auch, und da kann man mit Wildcards arbeiten und ebenfalls nur Bruchstücke eingeben.
Übrigens ein recht lehrreicher Link dort mit so vielen Möglichkeiten, die ich auf die Schnelle gar nicht alle nachvollziehen kann (mit MMult hab ich noch nie gearbeitet!???): DH für DeeDee!
ich empfehle in meinem Fall übrigens Finden zu verwenden, da sonst Briard und Labrador nicht unterschieden würden.
Bei der Matrixformellösung mit Sternchen besteht bei nur einem Sternchen diese Gefahr nicht, bei zweien schon:
i*S* könnte Irish Setter oder Italienischer Wasserhund sein
Ja, er ist etwas komplizierter, weil ich Bedienerfreundlichkeit bieten wollte, nämlich Kurzeingaben und das geht mit der einfachen Lösung von Oubyi -die aber haargenau stimmt- nicht. Da muss man die Langnamen von Klasse und Rasse ausschreiben.
Diesen Fehler mach ich immer wieder, dass ich mehr bieten will, als gefragt wurde...Aber Du hast ja jetzt die Wahl! Wobei ich die Lösung von DeeDee auch für sehr gut und ausbaufähig halte!
Du kannst es mit INDEX(VERGLEICH) lösen, wobei du beim Vergleich das Suchkriterium und die Suchmatrix verkettest, wie hier http://excelformeln.de/formeln.html?welcher=30
Die erste Matrixformel auf der Seite sollte deinem Vorhaben schon genügen. Ein erster Schnelltest war bei mir jedenfalls erfolgreich.
Hallo Dee Dee,
danke für den Tipp. Ja, auf der Seite von deinem Link ist auch die Formel:
=INDEX(C:C;SUMMENPRODUKT((A1:A99="x")*(B1:B99="y")*ZEILE(1:99)))
zu finden.
Es ist ja nicht so, dass ich nicht auch gesucht hätte, nur eben mit dem falschen Suchbegriff nur "SUMMENPRODUKT" - und so kam ich in unsägliche Tiefen des Internets, wie z.B.
http://www.xldynamic.com/source/xld.SUMPRODUCT.html
wo ich dann aufgab.
Gruß Distel
Hi Distel, in Excel führen meistens viele Wege nach Rom. Mir geht's da nicht anders als dir, ich hab mich auch schon in komplizierte Sackgassen versteift, und dann festgestellt, dass jemand längst eine recht simple Lösung präsentiert hat.
Diese Verweis-Lösung fiel mir bei deiner Frage ein, da ich die Seite neulich schon mal aufgerufen hatte.
Uwe, genial!
Ich verneige mich, Oh Effendi der Zellenberechnung ;-)
Distel