Herbers Excel-Forum - das Archiv
letzten Buchstaben ermitteln

|
Betrifft: letzten Buchstaben ermitteln
von: Erich M.
Geschrieben am: 27.03.2005 09:15:33
Hallo EXCEL-Freunde,
möchte aus einer Zelle den letzten Buchstaben rechts ermitteln.
Wie geht das, wenn die letzten Zeichen Zahlen sind:
|
Test1 |
| A | 2 | Bezeichnung | 3 | WV 123 Muster Kaufen 462 T | 4 | WV 234 Meuster und kaufen 467 K | 5 | WV 2345 Muster GmbH u Co. KG 465 K 345 | 6 | WV 1234 Muster und kaufen 463 L 356 | |
|
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen Excel Jeanie HTML 3.0 Download
Mit diesem Code gehts, wenn keine Zahl rechts:
' aus Zelleninhalt letzten Buchstaben übertragen
Cells(2, 2) = "Merkmal"
For i = 3 To myZeile
Cells(i, 2) = Right(Cells(i, 1), 1)
Next
Jetzt müssten rechts die Zahlen "übersehen" werden bei den Zeilen 5 und 6.
Besten Dank für eine Hilfe!
mfg
Erich
http://www.toolex.de
Betrifft: AW: letzten Buchstaben ermitteln
von: Hajo_Zi
Geschrieben am: 27.03.2005 09:24:45
Hallo Erich,
ich halte mich mal an die ersten zwei Zeilen und setze das mal um.
Option Explicit
Sub rechts()
Dim InI As Integer
Dim InJ As Integer
For InI = 3 To 6
For InJ = Len(Cells(InI, 1)) To 1 Step -1
If IsNumeric(Mid(Cells(InI, 1), InJ, 1)) Then
Cells(InI, 2) = Mid(Cells(InI, 1), InJ, 1)
Exit For
End If
Next InJ
Next InI
End Sub
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.
Betrifft: AW: letzten Buchstaben ermitteln
von: Erich M.
Geschrieben am: 27.03.2005 09:34:11
Hallo Hajo,
zunächst danke; aber jetzt wird die letzte Zahl ermittelt;
ich bräuchte den letzten Buchstaben rechts; leider konnte ich es nicht umstellen.
mfg
Erich
http://www.toolex.de
Betrifft: AW: letzten Buchstaben ermitteln
von: Hajo_Zi
Geschrieben am: 27.03.2005 09:37:38
Hallo Erich,
If Not IsNumeric(Mid(Cells(InI, 1), InJ, 1)) And _
Mid(Cells(InI, 1), InJ, 1) <> " " Then
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Betrifft: Danke Hajo - perfekt; das wars!!
von: Erich M.
Geschrieben am: 27.03.2005 09:47:35
mfg
Erich
http://www.toolex.de
Betrifft: AW: Danke Hajo - perfekt; das wars!!
von: Hajo_Zi
Geschrieben am: 27.03.2005 09:49:10
Hallo Erich,
die Variante von Andre ist aber die eindeutig bessere Methode.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Betrifft: AW: letzten Buchstaben ermitteln
von: andre
Geschrieben am: 27.03.2005 09:38:03
Hallo Erich,
hier mal ein Beispiel zum Basteln:
Sub test4()
a = "K 123 k 423"
For i = Len(a) To 1 Step -1
If Mid(a, i, 1) Like "[a-z,A-Z]" Then
MsgBox 1
b=Mid(a, i, 1)
Exit For
End If
Next
End Sub
Betrifft: AW: letzten Buchstaben ermitteln
von: Erich M.
Geschrieben am: 27.03.2005 09:51:34
Hallo andre,
danke; da fehlen mir leider noch die Kenntnisse. Mit Hajos Lösung komme ich bereits klar.
Deinen Vorschlag kann ich leider nicht anpassen; allerdings wäre es trotzdem interessant,
da ich immer wieder Auswertungen mit Zahlen- / Buchstabenkombinationen machen muss.
mfg
Erich
http://www.toolex.de
Betrifft: AW: letzten Buchstaben ermitteln
von: andre
Geschrieben am: 27.03.2005 10:06:03
Hallo Erich,
hier der code. Er läuft übrigens auch wesentlich schneller, Hajo's läuft 2-3s und dieser 1-2 bei 1000 Datensätzen und dem String abc 123 def 456 ijk 789 10 11 12, CPU Celeron 2600. Hilfe findest Du in Excel unter dem Begriff like.
Sub rechts2()
Dim InI As Integer
Dim InJ As Integer
For InI = 1 To 100
For InJ = Len(Cells(InI, 1)) To 1 Step -1
If Mid(Cells(InI, 1), InJ, 1) Like "[a-z,A-Z]" Then
Cells(InI, 3) = Mid(Cells(InI, 1), InJ, 1)
Exit For
End If
Next InJ
Next InI
End Sub
Grüße, Andre
Betrifft: AW: letzten Buchstaben ermitteln
von: andre
Geschrieben am: 27.03.2005 10:11:49
... die äußere Schleife muss natürlich so stehen:
For InI = 3 To 6
und nicht
For InI = 1 To 100
und bevor eine Frage kommt - in meinem Zeit - Test stand natürlich auch eine 1000 und nicht die 100 wie gepostet in dieser Schleife ;-)
schöne Ostern an alle, Gruß, Andre
Betrifft: AW: letzten Buchstaben ermitteln
von: Erich M.
Geschrieben am: 27.03.2005 16:03:54
Hallo andre,
besten Dank - auch für die weiteren Erklärungen.
Der Hinweis mit der Zeit wäre für mich aber noch insofern hilfreich, als ich bei der
Auswertung ca. 16.000 Datensätzen bearbeiten muss. Dabei werden verschiedene Daten auf ca.
20 Spalten verteilt (wie die obige).
Jetzt wäre interessant zu wissen, wie lange die jeweiligen Spalten-Auswertungen benötigen.
Kann man innerhalb eines codes mehrere Zeitmessungen vornehmen und irgendwo eintragen lassen?
(Ich meine das im Forum mal gesehen zu haben und versuche es zu finden).
Besten Dank nochmal!
mfg
Erich
http://www.toolex.de
Betrifft: AW: letzten Buchstaben ermitteln
von: Erich M.
Geschrieben am: 27.03.2005 16:33:46
hab was gefunden:
http://phorum.excelhost.de/read.php?11,62389,62455#msg-62455
mfg
Erich
http://www.toolex.de
Betrifft: AW: letzten Buchstaben ermitteln
von: andre
Geschrieben am: 28.03.2005 10:09:34
Hallo Erich,
die Lösung geht, ich nehme jedoch wegen der Kompatibilität zu älteren Versionen diese Form:
Sub rechts2()
Dim InI As Integer
Dim InJ As Integer
Cells(1, 5) = Format(Now, "hh:mm:ss") 'Startzeit
For InI = 1 To 1000
For InJ = Len(Cells(InI, 1)) To 1 Step -1
If Mid(Cells(InI, 1), InJ, 1) Like "[a-z,A-Z]" Then
Cells(InI, 3) = Mid(Cells(InI, 1), InJ, 1)
Exit For
End If
Next InJ
Next InI
Cells(2, 5) = Format(Now, "hh:mm:ss") 'Endzeit
End Sub
Den "Zeitstempel" musst Du unmittelbar vor und nach der Aktion setzen, bei Formeleinträgen ggf. auch die Berechnung aus- und wieder einschalten. Zur Überprüfung von Formelberechnungszeiten musst Du ggf. alle Einträge neu setzen, da Excel je nach Befehl nur Formeln mit Bezug auf geänderte Zellen neu berechnet.
Grüße, Andre
Betrifft: AW: letzten Buchstaben ermitteln
von: Erich M.
Geschrieben am: 28.03.2005 10:14:14
Hallo Andre,
danke für den zusätzlichen Tipp!!
mfg
Erich
http://www.toolex.de
Betrifft: AW: letzten Buchstaben ermitteln - ohne VBA
von: FP
Geschrieben am: 27.03.2005 12:06:25
Hallo andre,
|
Tabelle1 |
| A | B | 1 | WV 2345 Muster GmbH u Co. KG 465 K 345 | K | 2 | WV 1234 Muster und kaufen 463 L 356 | L | 3 | WV 123 Muster Kaufen 462 T | T | Formeln der Tabelle | B1 : =WENN(ISTZAHL(RECHTS(A1)+0);TEIL(A1;SUCHEN("#";WECHSELN(A1;" ";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))-1;1);RECHTS(A1))
B2 : =WENN(ISTZAHL(RECHTS(A2)+0);TEIL(A2;SUCHEN("#";WECHSELN(A2;" ";"#";LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";""))))-1;1);RECHTS(A2))
B3 : =WENN(ISTZAHL(RECHTS(A3)+0);TEIL(A3;SUCHEN("#";WECHSELN(A3;" ";"#";LÄNGE(A3)-LÄNGE(WECHSELN(A3;" ";""))))-1;1);RECHTS(A3))
|
|
|
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen Excel Jeanie HTML 3.0 Download
Servus aus dem Salzkammergut
Franz
Betrifft: AW: noch eine Variante ohne VBA
von: FP
Geschrieben am: 27.03.2005 14:20:24
Hallo Erich,
diesmal als Arraformel
|
Tabelle1 |
| A | B | 1 | e ist 123 der letzt 4 Buchstabe123 | e | 2 | Xist der letzte 123 X | X | 3 | Das 1 x 1 ist leicht | t | 4 | Das leichte 1 x 1 | x | Formeln der Tabelle | B1 : {=TEIL(A1;LÄNGE(A1)-MAX(ANZAHL(RECHTS(A1;SPALTE(1:1))+0));1)}
B2 : {=TEIL(A2;LÄNGE(A2)-MAX(ANZAHL(RECHTS(A2;SPALTE(2:2))+0));1)}
B3 : {=TEIL(A3;LÄNGE(A3)-MAX(ANZAHL(RECHTS(A3;SPALTE(3:3))+0));1)}
B4 : {=TEIL(A4;LÄNGE(A4)-MAX(ANZAHL(RECHTS(A4;SPALTE(4:4))+0));1)}
Enthält Matrixformel: Umrandende { } nicht miteingeben, sondern Formel mit STRG+SHIFT+RETURN abschließen! |
|
|
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen Excel Jeanie HTML 3.0 Download
Servus aus dem Salzkammergut
Franz
Betrifft: AW: noch eine Variante ohne VBA
von: andre
Geschrieben am: 27.03.2005 14:29:52
Hallo Franz,
wenn ich die Formel auf meinen Beispielstring
"abc 123 def 456 ijk 789 10 11 12"
anwende erhalte ich als Ergebnis 1 !?
hier erhalte ich als Ergebnis 9
"abc 123 def 456 ijk 789 1"
und hier das Leerzeichen
"abc 123 def 456 ijk 789 "
und erst hier das k
"abc 123 def 456 ijk 789"
- Anführungszeichen nicht in Zelle übernehmen -
Grüße, Andre
Betrifft: AW: auch kein Problem
von: FP
Geschrieben am: 27.03.2005 14:43:48
Hallo Andre,
man muß nur vorher alle Leerzeichen in Nullen umwandeln :-)
|
Tabelle1 |
| A | B | 5 | abc 123 def 456 ijk 789 10 11 12 | k | 6 | abc 123 def 456 ijk 789 | k | 7 | abc 123 def 456 ijk 789 | k | Formeln der Tabelle | B5 : {=TEIL(A5;LÄNGE(A5)-MAX(ANZAHL(RECHTS(WECHSELN(A5;" ";0);SPALTE(5:5))+0));1)}
B6 : {=TEIL(A6;LÄNGE(A6)-MAX(ANZAHL(RECHTS(WECHSELN(A6;" ";0);SPALTE(6:6))+0));1)}
B7 : {=TEIL(A7;LÄNGE(A7)-MAX(ANZAHL(RECHTS(WECHSELN(A7;" ";0);SPALTE(7:7))+0));1)}
Enthält Matrixformel: Umrandende { } nicht miteingeben, sondern Formel mit STRG+SHIFT+RETURN abschließen! |
|
|
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen Excel Jeanie HTML 3.0 Download
Servus aus dem Salzkammergut
Franz
Betrifft: Danke für die Ergänzungen!!
von: Erich M.
Geschrieben am: 27.03.2005 16:00:49
mfg
Erich
http://www.toolex.de