Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Teilstring in Array
03.09.2007 17:45:00
Reinhard
Hallo!
Ich suche eine Formel (keine selbsterstellte Funktion oder Makro), das mir folgendes löst:
in einem Bereich stehen Produkte. Diesen soll in der nächsten Spalte Kategorien zugeordnet werden. In einer zweiten Tabelle stehen Stichwörter, die in der Produktbezeichnung vorkommt und dahinter die entsprechende Kategorie. Wie schaffe ich es, daß nachgesehen wird, welches Sticjwort vorkommt und die entsprechende Kategorie ausgibt.
Eine vereinfachte Tabelle findet ihr hier:
https://www.herber.de/bbs/user/45654.xls
Als Ergebnis soll hinter "türkische Feigen" dann "Kategorie 1" und hinter "Orangen aus Kalifornien" dann "Kategorie 3" stehen.
Ich hab's mit der Matrixformel in Zelle B11 {=if(search($A$1:$A$3;A11)>0;$B$1:$B$3;"nicht vorhanden")} versucht. Das klappt aber leider nicht.
Vielleicht kann jemand helfen.
Ciao
Reinhard

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilstring in Array
03.09.2007 19:19:00
HermannZ
Hallo Reinhard;
ist zwar ne komische Tabelle aber versuche mal in B11 folgende Formel;
=INDEX(B:B;WENN(ISTZAHL(FINDEN($A$3;A11));3;WENN(ISTZAHL(FINDEN($A$2;A11));2; WENN(ISTZAHL(FINDEN($A$1;A11));1))))
oder in Englich so;
=INDEX(B:B,IF(ISNUMBER(FIND($A$3,A11)),3,IF(ISNUMBER(FIND($A$2,A11)),2,IF(ISNUMBER(FIND($A$1,A11)),1) )))
Gruss HermannZ

AW: Teilstring in Array
03.09.2007 19:57:00
Reinhard
Hallo Hermann,

ist zwar ne komische Tabelle aber versuche mal in B11 folgende Formel;
=INDEX(B:B;WENN(ISTZAHL(FINDEN($A$3;A11));3;WENN(ISTZAHL(FINDEN($A$2;A11));2; WENN(ISTZAHL( _
FINDEN($A$1;A11));1))))
oder in Englich so;
=INDEX(B:B,IF(ISNUMBER(FIND($A$3,A11)),3,IF(ISNUMBER(FIND($A$2,A11)),2,IF(ISNUMBER(FIND($A$1, _
A11)),1) )))


Ja, die Tabelle ist komisch, die einzelnen Positionen sind frei erfunden, in der großen Tabelle sind andere Einträge.
Deine Formel funktioniert, aber meine Tabelle hat bei den Stichwörtern über 50 Einträge und da wird Deine Lösung eine zu lange Formel ergeben. Deshalb dachte ich an eine Matrixformel.
Ciao
Reinhard

Anzeige
AW: Teilstring in Array
03.09.2007 20:34:00
HermannZ
Hallo Reinhard;
sowas ähnliches habe ichmir schon gedacht, aber desshalb war der Satz Komische Tabelle gefallen.
wenn du zum Beispiel dich dazu durchringen kannst die Tabell so zu gestalten das ein einheitliches Schema entsteht z.B. entweder der Suchwert hinten oder vorne aber nicht hinten und vorne.
damit du siehst was ich meine schreibe einmal in Zelle A15 so das am ende Orangen steht, und in Zelle A16 an ende Äpfel.
dann schreibe in Zelle B11 folgende Formel;
~f~
=INDEX(B:B;VERGLEICH(TEIL(A11;FINDEN(" ";A11)+1;55);$A$1:$A$3;0))
und nach unten kopieren.
jetzt kannst du erkennen wie einfach das ist wenn die Tabelle sinnvoll gestaltet wird.
Gruss HermannZ

Anzeige
AW: Teilstring in Array
03.09.2007 20:35:02
Daniel
Hi
ist relativ schwierig, da sich das relevante Stichwort an beliebieger Stelle im Text befinden kann.
einfacher wärs, du könntest bei euch die Schreibweise durchsetzen, wie sie z.B. in der Bundeswehr üblich ist, dh. z.B.
Feigen spanisch
Feigen türkisch
Äpfel steirisch gross
Orangen Kalifonrisch
usw.
dann könnstest du die Kategorie über den SVerweis zuweisen, den Suchbergiff (der ja immer an erster Stelle im Text steht) kannst du dann mit den Textfunktionen LINKS und FINDEN separieren, dh. die Formel sieht dann so aus (Formel gilt für dein Beispiel):
= sverweis(links(a11;finden(" ";a11)-1);$a$1:$b$3;2;0)
selbst wenn es für die originale Schriebweise eine Matrix-Formel gäbe, würde das aber bei grösseren Datenmengen immer eine recht zähe berechnung geben, da diese nicht besonders schnell sind und immer der ganze Text mit der Tabelle abgeglichen werden muss.
Ich würde dann aber auch eine selbstgeschriebenen Formel einer Matrix-Formel vorziehen, einfach weils verständlicher und leichter zu warten ist (für mich zumindest, mache hier im Forum sehen das vielleicht anders)
Gruß, Daniel
(ich lass die Frage mal offen, weils ja nicht direkt ne Lösung für dein Problem ist)

Anzeige
AW: Teilstring in Array
03.09.2007 20:52:21
Reinhard
Hallo Daniel, hallo Hermann,
leider kann ich die Schreibweise nicht ändern, sie wird mir so von einem entfernten System übermittelt. Und es sind nicht so einfache Begriffe wie die türkischen Feigen sondern ziemlich lange Strings die eben dummerweise nicht immer ganz gleich aufgebaut sind.
Die Berechnungszeit bei einer Matrixformel wäre kein Problem, so oft wird diese Tabelle nicht berechnet.
Zur Zeit berechne ich diese Tabelle mit Hilfe eines Makros. Leider muß ich wegen einer Systemumstellung das irgendwie in eine Formel, die mit den eingebauten Funktionen auskommen muß, bringen.
Eine Notlösung hab' ich schon: ich baue eine Tabelle auf, die Spaltenweise die Stichwörter enthält, vergleiche in der Tabelle dann zeilenweise mit dem String. Passt es, kommt in die Zelle am Kreuzungspunkt die Kategorie, ansonsten nichts und dann zähle ich die Strings zeilenweise zusammen. Aber diese Lösung schaut einfach furchtbar aus.
Aber vielleicht hat noch jemand die geniale Idee ;-)
Ciao
Reinhard

Anzeige
AW: Teilstring in Array
03.09.2007 21:15:00
Daniel
Hi
naja, die Hilfsspalten kannst du doch ausblenden.
außderdem hab ich jetzt ne Array-Formel gefunden, die das Problem lösen könnte.
Rückgabewert der Formel ist die Zeilenzahl aus der Kategorietabelle, damit könntest du vielleicht was anfangen.
(dh. Feigen = 1, Äpfel = 2, Orangen = 3)
Trick bei der Sache ist, daß man bei der Zählenwenn-Funktion als Suchvektor ja auch nur eine Einzelne Zelle angeben kann, Ergebnis ist dann 1 oder 0, und daß man beim Suchbergriff auch Platzhalter verwenden darf.
die Formel sieht dann so aus:

{=SUMME(ZÄHLENWENN(A11;"*"&$A$1:$A$3&"*")*ZEILE($A$1:$A$3))}


gültig für deine Beispieldatei und natürlich als ARRAY-Formel
Problelmatisch wirds nur, wenn mehrere Suchbegriffe aus der Kategorietabelle in einer Produktbeschreibung gleichzeitig vorkommen, dann werden die Werte aufaddiert, dh.
Zamonische Orangenfeigen hätten das Ergebnis 4
Gruß, Daniel

Anzeige
AW: Teilstring in Array
03.09.2007 21:28:34
Reinhard
Hallo Daniel,
genau das ist es, vielen Dank!
Ich wußte doch, daß ich hier die wahren Profis finde.
Ciao
Reinhard

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige