| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Auswerten von Alphanumerischen kombinationen (3086 mal gelesen)
|
HKXVZBi Ehrenmitglied Konstruktion Elektroplanung
    
 Beiträge: 1502 Registriert: 27.01.2010
|
erstellt am: 04. Feb. 2010 16:06 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich hab das Problem das ich den letzten Buchstaben aus einer Alphanummerischen Kombination (ZBZBZB) wobei Z für Zahl steht und B für Buchstaben auswerten möchte. Z kann 1, 2 oder 3 sein B kann jeweils einer von 7 verschiedenen Buchstaben sein z.B. A, B, C, D, E, F, G In Zelle A1 steht z.B. 1A2B3C, jetzt soll in Zelle M1 der der Zweite Buchstabe ausgewertet werden, wenn dieser wie im Bsp. ein B ist soll hier ein X erscheinen. In Zelle N1 soll jetzt der letzte Buchstabe ausgewertet werden, ähnlich wie im ebend beschrieben. Gibt es eine Möglichkeit Platzhalter in einer Formel zu nutzen, ähnlich wie bei der Suche in Excel ("*")? Gruß und Dank schonmal vorweg
HKXVZBi ------------------ „Wenn man sagt, daß man einer Sache grundsätzlich zustimmt, so bedeutet es, daß man nicht die geringste Absicht hat, sie in der Praxis durchzuführen.“ Otto von Bismarck Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
 
 Beiträge: 141 Registriert: 14.10.2004 WinXP Prof.// SP3 Excel 2003 // SP3
|
erstellt am: 04. Feb. 2010 17:01 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
Hallo, ich würde das Ganze mit Textfunktionen lösen:
Code: =WENN(TEIL(A1;2;1)="B";"X";" ")
Damit schaut Excel in Zelle A1, 2. Position des Textes, 1 Zeichen. Wenn dort ein A steht, schreibt es ein x sonst nichts. Für das letzte Zeichen noch folgende Erweiterung: Code: =WENN(TEIL(A2;LÄNGE(A2);1)="A";"x";" ")
------------------ Grüße! René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
   
 Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 04. Feb. 2010 17:02 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
|
HKXVZBi Ehrenmitglied Konstruktion Elektroplanung
    
 Beiträge: 1502 Registriert: 27.01.2010
|
erstellt am: 05. Feb. 2010 08:34 <-- editieren / zitieren --> Unities abgeben:         
DANKE für die schnelle Antwort, die Formeln haben super funktioniert!!! der nächste Schritt wäre jetzt die ganze sache weiter zu automatisieren, mit Hilfe von VBA oder eines Makros! Da die Liste ja automatisch durch ein anderes Programm (EPLAN P8) erzeugt wird! Es funktioniert zwar auch so SUPER jedoch sind die Formeln recht lang! =WENN(TEIL(N127;6;1)="E";"CU ";WENN(TEIL(N127;6;1)="U";"EL-L";WENN(TEIL(N127;6;1)="T";"JIE";WENN(TEIL(N127;6;1)="C";"JMS";WENN(TEIL(N127;6;1)="D";"OJD";WENN(TEIL(N127;6;1)="F";"EXTE RN";WENN(TEIL(N127;6;1)="X";"-";" "))))))) aber mit dieser Problematik werde ich mich demnächst etwas näher befassen! ------------------ „Wenn man sagt, daß man einer Sache grundsätzlich zustimmt, so bedeutet es, daß man nicht die geringste Absicht hat, sie in der Praxis durchzuführen.“ Otto von Bismarck Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HKXVZBi Ehrenmitglied Konstruktion Elektroplanung
    
 Beiträge: 1502 Registriert: 27.01.2010 i7-3770 3.40GHz, 16GB RAM Radeon Pro WX5100 3xHP Z27n G2 Software: MS Win 10 64Bit MS Office 364 ------ ePlan Electric P8 Menüumfang: ǝʇɹǝdxǝ
|
erstellt am: 05. Feb. 2010 08:49 <-- editieren / zitieren --> Unities abgeben:         
So das nächste Problem lässt auch nicht lange auf sich warten und zwar muss ich jetzt eine längere Alphanummerische kombination auswerten! Das PROBLEM besteht hierbei das diese nicht immer gleich aufgebaut sind! Hier einige Bsp. =D183+12E620-WCE183.1 =D185+22-WB1 =#DA00+30E210-11WP01 =#DE19+30E104-WCP651.00 was aber immer gleich bleibt ist die Grundstruktur =?+?-? (die Fragezeichen stehen hier für eine unbekannte Anzahl an Buchstaben oder Zahlen) Interessant für mich ist nur das was hinter dem "-" steht und hier auch nur folgende Buchstaben kombinationen WP, WC, WI, WB, WE, WD In abhängigkeit davon welche Kombination dort steht, soll in eine andere Zelle, der gleichen Spalte eine Zahl geschrieben werden! Über eine einfache Formel wird das wohl nicht mehr funktionieren ------------------ �Wenn man sagt, daß man einer Sache grundsätzlich zustimmt, so bedeutet es, daß man nicht die geringste Absicht hat, sie in der Praxis durchzuführen.�
Otto von Bismarck [Diese Nachricht wurde von HKXVZBi am 05. Feb. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HKXVZBi Ehrenmitglied Konstruktion Elektroplanung
    
 Beiträge: 1502 Registriert: 27.01.2010
|
erstellt am: 05. Feb. 2010 09:03 <-- editieren / zitieren --> Unities abgeben:         
ich glaube das ich das Problem selbst lösen konnte undzwar mit dieser Formel: =WENN(ISTZAHL(FINDEN("WP";B8));"A";1) muss ich nur noch schachteln wie die obere und denn ist alless in Butter! Über Tips wie ich diese ganze Problematik in VBA umsetzen könnte wäre ich jedoch immernoch dankbar! Danke nochmal ------------------ „Wenn man sagt, daß man einer Sache grundsätzlich zustimmt, so bedeutet es, daß man nicht die geringste Absicht hat, sie in der Praxis durchzuführen.“ Otto von Bismarck Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 05. Feb. 2010 09:10 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
 Auf die Schnelle, aus der von Paulchen schon verlinkten Formel abgeleitet: Code: =WAHL(VERGLEICH(TEIL(A1;FINDEN("-";A1;1)+1;2);{"WP";"WC";"WI";"WB";"WE";"WD"};0);1;2;3;4;5;6; )
Ach ja, Quelle der Inspiration war (wie so oft) excelformeln.de. [rredit] Formel bringt natürlich bei Deinem =#DA00+30E210-11WP01 ein #NV, vielleicht solltest Du lieber nach "W" suchen, statt nach "-", aber das hängt sehr stark von Deinen erwarteten Daten ab. Für's VBA sind Funktionen wie InStr() und Mid() für Dich interessant, hab ich aber leider keine Zeit für, wenn mir was einfällt meld ich mich wieder, wahrscheinlich ist aber wer anders damit schneller  [/rredit] ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HKXVZBi Ehrenmitglied Konstruktion Elektroplanung
    
 Beiträge: 1502 Registriert: 27.01.2010
|
erstellt am: 05. Feb. 2010 11:07 <-- editieren / zitieren --> Unities abgeben:         
also gelöst habe ich es mit dieser Formel: =WENN(ISTZAHL(FINDEN("WP";B8));"A";WENN(ISTZAHL(FINDEN("WC";B9));"B";.... usw. halt ineinander geschachtelt dies setzt natürlich vorraus das mehere verschiedene Kombinationen nicht in ein und der selben Zelle stehen können, daher wäre eine VBA lösung mit der ich z.B. die Zelle in der die jeweilige Alphanummerischekombination gespeichert ist in ein Array packe und dann geziehlt erst ab dem "-" nach den verschiedenen Buchstaben kombinationen suche! aber da ich bisher nur grundkenntnisse in C & C++ besitze und mit VBA noch keine großen erfahrungen gesammelt habe wird es noch ein bisschen dauern bis ich eine geeignete Lösung gefunden habe!
------------------ „Wenn man sagt, daß man einer Sache grundsätzlich zustimmt, so bedeutet es, daß man nicht die geringste Absicht hat, sie in der Praxis durchzuführen.“ Otto von Bismarck Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 05. Feb. 2010 11:24 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
Beim Schachteln hast Du halt das Problem, dass irgendwann Schluß ist, daher "meine" Lösung oben. Kannst anstelle der 1;2;3... auch Zellbezüge oder Buchstaben einsetzen, ganz nach Belieben. array, InStr, Find, Mid u.v.a.m. sind für Dich in VBA wichtig. Aber quäl mal die Suche / google, ich bin sicher, Du mußt das Rad nicht neu erfinden, so etwas sollte es schon geben. Andererseits sind die eigenen Räder ja immer die schönsten  Stell Deine Ansätze, an denen Du dann nicht weiterkommst einfach mal hier rein, kommt dann schon wer, der Dir hilft  Viel Erfolg!  ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HKXVZBi Ehrenmitglied Konstruktion Elektroplanung
    
 Beiträge: 1502 Registriert: 27.01.2010
|
erstellt am: 05. Feb. 2010 12:39 <-- editieren / zitieren --> Unities abgeben:         
ja google hab ich schon zu so manchen problemen befragt ich werde erstmal ein bisschen rumprobieren und vielleicht komm ich ja meinem ziel näher prinzipiell würde es erstmal reichen wenn ich mir die formeln automatisch mittels vbs skript in die jeweiligen zellen schreiben könnte (z.B. immer wenn die datei geöffnet wird) ich habe dazu auch shcon etwas bei google gefunden aber da ist nochetwas faul oder fehlerhaft in der syntax und da ich die einzelnen befehle nicht genau kenne ist es recht schwer für mich den fehler zu finden hier mal das bisherige: Private Sub Kabelplan() Dim oBlatt As Worksheet Set oBlatt = ThisWorkbook.Worksheets("EplanSheet1") 'Tabellenname With oBlatt .Range("I8").FormulaLocal = "WENN(TEIL(N8;6;1)=E,CU ,WENN(TEIL(N8;6;1)=U,EL-L,WENN(TEIL(N8;6;1)=T,JIE,WENN(TEIL(N8;6;1)=C,JMS,WENN(TEIL(N8;6;1)=D,OJD,WENN(TEIL(N8;6;1)=F,EXTERN,WENN(TEIL(N8;6;1)=X,-, )))))))" End With Set oBlatt = Nothing End Sub eine Frage hätte ich noch: Müssen Formeln immer fortlaufend hintereinander geschrieben werden (siehe oben) oder kann ich diese auch mittels umbruch auf mehrere zeilen verteilen? (dies sollte dann einer besseren übersichtlichkeit dienen) das es dnn z.B. so aussieht: Private Sub Kabelplan() Dim oBlatt As Worksheet Set oBlatt = ThisWorkbook.Worksheets("EplanSheet1") 'Tabellenname With oBlatt .Range("I8").FormulaLocal = "WENN(TEIL(N8;6;1)=E,GH, WENN(TEIL(N8;6;1)=U,PTD, WENN(TEIL(N8;6;1)=T,KBA, WENN(TEIL(N8;6;1)=C,EEX, WENN(TEIL(N8;6;1)=D,TRJ, WENN(TEIL(N8;6;1)=F,TRC, WENN(TEIL(N8;6;1)=X,-, )))))))" End With Set oBlatt = Nothing End Sub ------------------ „Wenn man sagt, daß man einer Sache grundsätzlich zustimmt, so bedeutet es, daß man nicht die geringste Absicht hat, sie in der Praxis durchzuführen.“ Otto von Bismarck Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
   
 Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 05. Feb. 2010 12:40 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
Mahlzeit, hier mal ein Ansatz - kann sicher optimiert werden - einfach in ein Modul kopieren: Code: Function finde_buchst(str_Text) As StringDim str_temp As String 'temporaere Hilfskette Dim str_buchst As String 'reine Buchstaben Dim i As Integer 'Laenge der Kette, informativ Dim k As Integer 'Auftreten des "-" innerhalb der Kette Dim m As Integer 'Laufvariable fuer Schleife Dim n As Integer 'Laenge der BUCHSTABENkette str_temp = str_Text 'auslesen, um Original zu erhalten 'Zeichenfolge abspalten i = Len(str_temp) k = InStr(1, str_temp, "-") str_temp = Mid(str_temp, k + 1, i - k) 'str_temp enthaelt nun alles rechts ab dem "-": Debug.Print str_temp n = Len(str_temp) 'Buchstaben der Zeichenfolge ermitteln m = 1 Do If Asc(Mid(str_temp, m, 1)) >= 65 And Asc(Mid(str_temp, m, 1)) <= 90 Then 'GROSSbuchstaben A-Z Debug.Print Asc(Mid(str_temp, m, 1)) str_buchst = str_buchst & Mid(str_temp, m, 1) End If m = 1 + m Loop Until m = n Debug.Print str_buchst 'enthaelt NUR Buchstaben (A-Z) 'Ergebnis (Ausgabewert) festlegen If str_buchst Like "*W*P*" Then finde_buchst = "A" If str_buchst Like "*W*C*" Then finde_buchst = "B" 'weitere... Debug.Print finde_buchst End Function
Aufruf aus Excel (klappt in 07): =finde_buchst(DEINEZELLE) liefert bei mir für Deine Beispiele: =D183+12E620-WCE183.1 =D185+22-WB1 =#DA00+30E210-11WP01 =#DE19+30E104-WCP651.00 --> B A B
------------------ DIN1055.de | Lastannahmen für Anwender NEU: Foren zu DIN 1055 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
   
 Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 05. Feb. 2010 12:44 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
|
Thomas Harmening Moderator Arbeiter ツ
      

 Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 05. Feb. 2010 23:50 <-- editieren / zitieren --> Unities abgeben:          Nur für HKXVZBi
Code: Function Trennen(str As String, Modus As String) As String 'TRENNEN(Zelle;Modus)"Z" = Zahl,"T" = Text,"-" = -@@Dim i As Integer Dim strTemp, c As String strTemp = "" For i = 1 To Len(str) c = Mid(str, i, 1) If IsNumeric(c) Then If Modus = "Z" Then strTemp = strTemp & Mid(str, i, 1) End If Else If Modus = "T" Then strTemp = strTemp & Mid(str, i, 1) End If If Modus = "-" Then strTemp = strTemp & Mid(str, i, 1) End If End If Next If Modus = "-" Then strTemp = Mid(strTemp, InStr(1, strTemp, "-", 1) + 1, 2) End If 'case Trennen = strTemp End Function
zum Schluss bietet sich ein Case an, das die verschieden Ergebnisse aus -@@ auswertet.@Paulchen, bei dir war soviel Text drinnen, das habe ich überlesen und erst nach dem posten gemerkt, das auch auch eine Function präsentiertest Asche über mein Haupt ,) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |