Autor
|
Thema: Zelle teilweise vergleichen mit Liste ... (4392 mal gelesen)
|
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006
|
erstellt am: 07. Okt. 2014 16:32 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hoffe hier kann mir geholfen werden, bin schon den ganzen Tag an der Lösungsfindung. Mein Problem ist, ich möchte den Inhalt einer Zelle (z.B. A1) mit einer Liste abgleichen (Reiter "Werte"). Kommt ein Wert aus der Liste in der Zelle vor, so soll genau dieser wert in ein extra Feld (C1) ausgegeben werden. In der angehängten Datei hab ich 2 mögliche Varianten, die beiden funktionieren auch, aber leider nur solange der Zelleninhalt genau der Liste entspricht. Da eine ganze Zelle nach einigen Werten aus einer Liste durchsucht werden soll kann ich keine Platzhalter verwenden, wie in den meisten Foren empfohlen wird. Dort wird aber auch immer ein Wert gesucht. Tatsächlich wäre die Liste in meinem Anwendungsfall wesentlich länger, deshalb kann ich nicht die Werte aus der Liste einzeln in die Formel mit Platzhalter übernehmen Falls jemand eine Lösung hat, wäre ich wirklich sehr dankbar - gerne auch per VBA. Kann nur nicht selbst VBA Programmieren, anpassen dürfte aber gehen... ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 08. Okt. 2014 02:16 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
|
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006
|
erstellt am: 08. Okt. 2014 08:08 <-- editieren / zitieren --> Unities abgeben:
Man das gibts nicht, du bist genial! Funktioniert wie es soll, die 10 U's hast sicher! Kanns du bitte noch verraten wie du die Liste mit den möglichen Werten als "Werkstoffe" für die Formel definiert hast? Das wäre noch die Kirsche auf meiner Torte ...und, gibt es in Excel 2010 ein Equivalent zu Teilstring? das zeigt es mir irgendwie komisch an (=xl2003_Funktion_Suchstring.xls!Teilstring --> so geht's) wenn ich's 1:1 übernhemen will gibts nen Fehler... ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006 Intel Xeon 3,2GHz 12GB DDR3 NVIDIA Quadro 4000 Win 7 (64bit) SE ST8 MP10 SE ST10 (Test) TC 10.1.5
|
erstellt am: 08. Okt. 2014 08:13 <-- editieren / zitieren --> Unities abgeben:
ok, das mit der Kirsche hab ich rausgefunden, hat sich damit auch erledigt. Nur der Punkt mit der Funktion selbst, in Excel 2010 würde mich noch Interessieren....komische sache... ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 08. Okt. 2014 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
Hi, es wird eine UDF (User Defined Function = Benutzerdefinerte Funktion) verwendet, und das geht nur mit VBA. Wenn du dir die Originaldatei im VBA-Editor anschaust, dann hat sie ein Modul Namens Mod_Func_Teilstring - dieses musst du in deine Arbeitsmappe ziehen. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 08. Okt. 2014 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
Zum Zellbereich "Werkstoffe" .In Excel lassen sich Zellen, Bereiche mit einem Namen definieren, hat Vorteile wenn man sprechende Formeln haben will - Einfaches Bsp =A1*A2*A3 sagt u.U. weniger aus als wenn A1-A3 mit Laenge;Breite;Hoehe benamst wird, dann kann mann auch =Laenge*Breite*Hoehe schreiben, ein weiterer Vorteil, der Bezug ist auch gefixt und nicht variabel. (F4) Zur Funktion Teilstring Gut, die Aussage >2 o'clock nightly build - Status now Alpha ^^< reichte wohl nicht aus, das da was programmiert wurde -ich war ja auch so gemein und habe es unter *xls gspeichert, als *.xlsm wäre es wohl aufgefallen dass das Dokument ein Makro enthält. Aber da ja geschrieben wurde "Kann nur nicht selbst VBA Programmieren, anpassen dürfte aber gehen..." - wollte ich einfach nur den Skill abfragen Der Code muss dann natürlich in deine Excel kopiert werden, worin sie gebraucht wird;-) ansonsten geht es nur mit dem Verweis auf die xl2003_Funktion_Suchstring.xls (nicht ausgetestet)... Als Info: Bei Eisensteinundmarmorbricht - hier existert ja Stein und Marmor in der Werkstoffliste, die Funktion findet zuerst Stein, dann Marmor, daher der Rückgabewert Marmor. Code: Function Teilstring(Text As String, Suchtext As Range) As StringaArray = Suchtext For i = 1 To UBound(aArray, 1) 'On Error GoTo 0 If aArray(i, 1) <> "" Then If InStr(1, Text, aArray(i, 1), 1) > 0 Then Teilstring = aArray(i, 1) Else End If End If Next i End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006
|
erstellt am: 08. Okt. 2014 14:33 <-- editieren / zitieren --> Unities abgeben:
da hast mich ja ganz schön drann gekriegt! ich dachte echt das wär ne funktion die von 2003 bis 2010 verloren ging oder deren Name geändert wurde [...und keine xlsm, kein Wort über VBA, mit "build" ist sicher nur die Funktion selbst gemeint....] da muss ich meinen Skill wirklich suchen gehen, der is da auf der Strecke geblieben Naja jetzt hats ja geschnackelt....auch bei mir...diese problematik und einige andere die ich aber solo lösen konnte, haben mein Brain echt etwas mitgenommen Auf jedenfall noch mal vielen vielen Dank! Funktioniert echt einwandfrei (jetzt auch ohne Link auf ne Datei) und du hast mir damit ne Voll-Glatze erspaart (*Haareeinzelnwiedereinsetz*)! Wenn du mal in den Schwarzwald kommst, schreib vorher ne PM, dann geb ich dir dafür auch n Bierchen aus Grüße Corax ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006 Intel Xeon 3,2GHz 12GB DDR3 NVIDIA Quadro 4000 Win 7 (64bit) SE ST8 MP10 SE ST10 (Test) TC 10.1.5
|
erstellt am: 08. Okt. 2014 15:05 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Thomas Harmening: Status now Alpha
...fast vergessen... den Status kannst auf "Released" anpassen, (Beta übersprungen,) Schnell auf DVD's Pressen, Patent anmelden, Verpacken und Verticken (bevor es ein Fernöstlicher Mitmensch zu gesicht bekommt, der schneller DVD's Pressen und nach Europa schicken kann) ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 08. Okt. 2014 15:47 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
|
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006 Intel Xeon 3,2GHz 12GB DDR3 NVIDIA Quadro 4000 Win 7 (64bit) SE ST8 MP10 SE ST10 (Test) TC 10.1.5
|
erstellt am: 09. Okt. 2014 07:54 <-- editieren / zitieren --> Unities abgeben:
So dachte Ursprünglich auch das es geht...Funktioniert bei mir aber nicht so gaaanz richtig. Bei "noch-was_anderesFKMtrotzdem" kommt als Ergebnis nur 0, obwohl FKM vorkommt. Da hätte ich gesagt muss im Vergleich nur jeweils die eine Zelle angegeben sein, also: =INDEX(Werte!A:A;VERGLEICH("*"&Werte!A:A&"*";A2;0)) Aber dann kommt als Ergebnis immer nur die erste Zelle der Werkstoffe... An genau dem Zeugs bin ich schier Verzweifelt. Von meinem Verständnis her müsste es gehen, aber immer ist irgendwo noch ne kleinigkeit die in die Suppe spuckt. Es ist jetzt kein muss mehr da der VBA-Code funzt, aber rein Interesse halber, läuft die Funktion auch wenn du meine Beispieldatei mit den Werten von Thomas ergänzt? also x 1 Stein und Marmor... ...dann mit den erweiterten Roh-Daten? Bei mir sehen nur die ersten 2 Ergebnisse richtig aus. Auf jeden Fall auch ein Danke an dich Beverly! Grüße Corax ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 09. Okt. 2014 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
Ich hatte nur die ersten beiden gestestet, und da hat es funktioniert - weshalb auch immer nur bei diesen und nicht bei den anderen, aber ich bin nicht der Formelexperte, um dies erklären zu können. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 09. Okt. 2014 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 09. Okt. 2014 20:25 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
Code: =WENN(SUMME(ISTZAHL(SUCHEN(SUCHLISTE;A3))*1);INDEX(SUCHLISTE;VERGLEICH(1;ISTZAHL(SUCHEN(SUCHLISTE;A3))*1;0));"bunǝɯɯıʇsuıǝɹǝqü ǝuıǝʞ ;-)")
als Matrixformel abschliessen STRG+SHIFT+ENTER - bekommt dann eine geschweifte Klammer drumrum {} - Delirium build ;-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006
|
erstellt am: 10. Okt. 2014 09:41 <-- editieren / zitieren --> Unities abgeben:
jetzt hat sich doch noch ein weiteres Problem mit der teilstring funktion ergeben... Aus irgendeinem Grund werden gefundene Buchstaben vor Zahlen bevorzugt. wenn der zu durchsuchende Text wie im folgendem Bsp. aussieht wird immer Al angezeigt, auch wenn ich die Liste anders sortiere. Ich denke das muss in der funktion begründet sein, aber soooo gut kenn ich mich damit dann einfach doch nicht aus Bsp.: 30x15x1,5-1.4301HalbzeugHohlprofil hier wird das al aus Halbzeug bevorzugt und nicht 1.4301, obwohl 1.4301 in der Zelle davor vorkommt und auch in meiner Liste weiter oben steht. Irgendwelche Ideen? ------------------ Schreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 10. Okt. 2014 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für InvCorax
Klar Liste Werkstoffe cxcxy xcyxc 1.4301 safsd sdafs AL Ablauf... Teilstring = "" 1.4301 wird zuerst gefunden, und als Wert übernommen [Teilstring = aArray(i, 1)] , Teilstring = "1.4301" die Funktion läuft weiter findet Al und wieder wird Teilstring = aArray(i, 1) ausgeführt Teilstring = "Al" ist die Liste durchlaufen, wird Teilstring rückegeben , hier "Al" man könnte, die Funktion so schreiben, das sobald die erste Übereinstimmung gefunden wird, dieser auch zurückgegeben wird.
Code: Function Teilstring(Text As String, Suchtext As Range) As StringaArray = Suchtext For i = 1 To UBound(aArray, 1) 'durchläuft das Array Werkstoffe 'On Error GoTo 0 If aArray(i, 1) <> "" Then If InStr(1, Text, aArray(i, 1), 1) > 0 Then 'wenn gefunden, dann If Teilstring = "" Then Teilstring = aArray(i, 1) ' Wenn Teilsting = "" dann befülle mit übereinstimmung Else End If End If Next i End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InvCorax Mitglied Systembetreuer / Konstrukteur
Beiträge: 454 Registriert: 21.03.2006
|
erstellt am: 10. Okt. 2014 12:36 <-- editieren / zitieren --> Unities abgeben:
|