Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1648to1652
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
Inhaltsverzeichnis

mehrere Zeichen in Zelle als ein Zeichen auslesen

mehrere Zeichen in Zelle als ein Zeichen auslesen
09.10.2018 20:54:15
Toni
Guten Abend zusammen!
habe mal ne Frage: kann man bei einem Zellinhalt wie z.B. '50,9z' Excel davon überzeugen (VBA), dass nur 3 Zeichen in der Zelle stehen (len-Methode gibt 3 aus)?
nämlich:
5
0,9
z
Hätte an Syntax 5[0,9]z oder ähnliches gedacht, Fehlanzeige.
Zeichen drumrum können sowohl Text als auch Zahl sein. An welcher Stelle sich das "Mehrzeichen" befindet sollte variabel sein. Auch könnten mehrere "Mehrzeichen" in einer Zelle stehen. Das Mehrzeichen selbst könnte auch sein '0,88' also auch 4 statt 3 Zeichen. Geht immer um Komma-Zahlen als 1 Mehrzeichen.
Geht nicht oder?
Grüße
Toni

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
09.10.2018 21:55:41
onur
Len("50,9z")wird IMMER 5 ergeben.
"MEHRZEICHEN" ?
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
09.10.2018 22:04:38
Toni
Mir ist kein besserer Name dafür eingefallen: in der Zelle steht 0,5 (3 Zeichen) aber vba soll das wenn es durch den string maschiert als "eins" werten.
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
09.10.2018 22:07:44
onur
Dafür müsste man wissen, warum und was der Rest des Code damit macht.
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
09.10.2018 23:31:42
onur
Hier mit Leerzeichen als Trennung zum Testen.
https://www.herber.de/bbs/user/124515.xlsm
Anzeige
Ich befürchte, onur, ...
09.10.2018 23:54:26
Luc:-?
…dass du die Vorgabe nicht adäquat umgesetzt hast.
Gruß, Luc :-?
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
09.10.2018 23:58:06
Toni
Hi Onur, alles was ich bis jetzt getestet hab, flutscht. Hoffe es ist ok, wenn ich dir abschließend erst morgen feedback gebe. Bett ruft.
Ganz großes Danke bis hierhin!!
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
10.10.2018 20:03:40
Toni
Hi Onur,
kannst Du mir bitte das ar in "ReDim ar(UBound(arr))" erklären, ich finde nichts dazu im Netz und gedimt war da auch nichts?
Das man die len() mit ubound(arr) ersetzen kann (in diesem Fall) war neu für mich. Außerdem dass man den Datentyp über ne Funktion ändert und was ich nicht nachvollziehen kann: warum "Cells(z, i + 2).Value" trotzdem jede und nicht jede 2. Spalte anspricht?
Das Leerzeichen zw. allen Zeichen mitzugeben, ist schon Mehraufwand, das muss ich sehen.
Trotzdem nochmal Danke für die erneute Lehrstunde!
Grüße Toni
Anzeige
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
10.10.2018 21:10:42
onur
"ReDim ar(UBound(arr))" . Du kannst die ganze Zeile löschen, ist Restmüll aus der Testphase.
Der Code splittet den Text anhand der Leerzeichen (stattdessen kannst du auch was anderes _ nehmen, z.B. "/" oder "*", Hauptsache das Zeichen kommt sonst nicht vor - du musst nur bei

arr = Split(Cells(z, s), " "))
das " " durch z.B. "/" ersetzen), speichert das Ergebnis in ein Array und spuckt das, was nach Zahl aussieht, als Zahl aus.
Hat gar nix mit Len zu tun und Ubound(arr) ist die Obergrenze des Arrays (Wenn du Dim arr(10) tippen würdest, wäre UBound(arr)=10.
"Cells(z, i + 2).Value", weil die Schleife mit 0 anfängt und arr(0) in Spalte 2 schreibt und arr(1) in Spalte 3 usw.
Anzeige
AW: mehrere Zeichen in Zelle als ein Zeichen auslesen
10.10.2018 21:28:10
Toni
super vielen Dank!
mach nicht mehr so lange heute
beste grüße ,toni
Splitten: Für die beiden angegebenen Bspp ...
09.10.2018 23:43:27
Luc:-?
…würden wohl die folgenden, UDF-haltigen (pluralen) Matrix-Fmln ausreichen, Toni:
B9:F9: {=WENNFEHLER(VSplit(WECHSELN(A9;MaskOn(A9;"mrk{}");"#");"";1)/1;--MaskOn(MaskOn(A9;"mrk{}");"zw"))}
B10:D10: {=WENNFEHLER(VSplit(WECHSELN(A10;MaskOn(A10;"mrk`´");"#");"";1)/1;--MaskOn(MaskOn(A10;"mrk`´");"zw"))}
Die 2. natürlich nur unter der Voraussetzung, dass wie bei der 1. (und 3.) Anfang und Ende des DezimalZahl-Bereichs unter­schied­lich markiert wurden (hier `…´ statt gleicher '…', denn diesen Unterschied benötigt die UDF MaskOn!).
Da du anfänglich aber auch Buchstaben zugelassen hast, müsste für das Bsp 5[0,9]z eine längere Matrix-Fml zum Einsatz kommen:
B11:D11: {=WENN(VSplit(WECHSELN(A11;MaskOn(A11;"mrk[]");"#");"")="#";--MaskOn(MaskOn(A11;"mrk[]");"zw");VSplit(WECHSELN(A11;MaskOn(A11;"mrk[]");"#");"";1))}
UDF-Links:
MaskOn (Vs2.1) https://www.herber.de/forum/archiv/1344to1348/1344962_Initialen_bei_Doppelnamen.html#1345181
VSplit (Vs1.1) https://www.herber.de/bbs/user/99024.xlsm (BspDatei mit UDF-Pgmm)
Feedback nicht unerwünscht! Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Splitten: Für die beiden angegebenen Bspp ...
10.10.2018 00:00:03
Toni
Hi Luc,
das ist so umfangreich, da brauch ich länger, kann auch dir erst morgen mehr sagen, bedanke mich aber auch hier schonmal herzlich. Morgen dann mehr.
Grüße Toni
AW: Splitten: Für die beiden angegebenen Bspp ...
10.10.2018 19:42:05
Toni
Hi Luc,
Was ist das ? Deine Doktorarbeit oder sowas, ist ja der Hammer!
Hab eben ein bissl rumgespielt: funktioniert bei einmaligem Auftreten eines Sonderzeichenduos bestens, mehrmalig geht wahrscheinlich auch, erschließt sich mir nur nicht.
Fürs Verständnis bei anderen Anwendungsfällen:
"mrk" und "zw" -- wofür genau sind die da, bzw. wann kämen die anderen im Code hinterlegten Kürzel zum Einsatz? Wennfehlerkonstruktion fängt die nicht dividierbaren Zeichen ab, daher die Umstellung in Fml-Block 3 ...
Funktion Splitten denke ich komme ich noch mit (also im Tabellenblatt^^)
PS: mit VJoin und Wechseln habe ich mir die Ausgangssituation wiederhergestellt :)
Gruß und Danke dass du einen Teil der Funktionsweise der UDFs an meinem Beispiel durchexerziert hast! Bin wieder was schlauer ..
Toni
Anzeige
Nee, 'MaskOn' ist eine meiner ältesten UDFs ...
11.10.2018 03:21:31
Luc:-?
…und deshalb in der vorliegenden Version (und auch in späteren) noch nicht ganz ausgereift, Toni;
sie ist auch mit den späteren Erweiterungen auf Isolierung von Adressen (analog der von EinzelZeichen und ZeichenGruppen) nicht mehr auf dem aktuellen Xl-Stand und immer noch nicht aktiv matrixfml-fähig, d.h., ihr 1.Argument muss zwingend einen EinzelText* oder Verweis auf eine einzelne Zelle* mit ebensolchem enthalten. Als 2.Argument können beliebige EinzelZeichen, auch mehrere, oder ZeichenGruppen bezeichnende KurzTexte angegeben wdn. In vorliegender Version sollten das die folgenden sein:
nv=zw: Zahlenwerte, cap=gb: Großbuchstaben, min=kb: Kleinbuchstaben, let=bst: Buchstaben, an=anu: Buchstaben&Ziffern, num=zif: Ziffern, mar=mrk: MarkierungenVonAnfangs-BisEndZeichen (auch für mehrere gleich markierte im Text)
Mit dem 3.Argument kann angegeben wdn, ob diese Zeichen bzw der markierte TextTeil entfernt wdn sollen (1, der RestText bleibt erhalten). Ansonsten wdn nur die angegebenen Zeichen (inkl evtl Markierungs­zeichen) behalten, wobei dann auch zusätzlich zu einer ZeichenGruppenAngabe zu bewahrende Zeichen anstelle von 0 als 3.Argument angegeben wdn können. Entfernte Zeichen im TextInneren wdn generell durch ein einzelnes Leerzeichen (auch bei mehreren hintereinander) ersetzt. Am TextAnfang und -Ende entfallen sie dann generell.
—————————
* Das lässt sich aber bei Bedarf für eine plurale MatrixFml durch Anwendung einer aktiv matrixfähigen fmltext-auswertenden UDF wie TxEval mittels Argument­Variation umgehen.

VSplit ist jüngeren Datums und die letzte von mehreren UDFs auf der Basis der vbFkt Split, allerdings deutlich universeller als die pure vbFkt. Xl hat mW bis dato nichts Vglbares im Fktionsbestand. Für die vbFkt Join, auf der die UDF VJoin teilweise (mit einfach­ster Argumentierung) basiert, gibt's mittlerweile 2 Xl-Fktt, TEXTKETTE u.TEXTVERKETTEN (→TextJoin), die aber beide nicht VJoin-adä­quat sind. In bisher unveröffentlichten Versionen kann man mit VJoin auch Bereichsinhalte reell als MatrixKonstante in TextForm abbilden. Ihre vorläufig letzte Version soll wieder publiziert wdn, wenn sie endgültig fertig ist. Gleiches gilt für VSplit, für das es auch neue, leistungsfähigere Versionen gibt.
Morhn, Luc :-?

PS: Es freut mich, dass du experimentierfreudig bist und die UDFs zu nutzen weißt. Im Archiv sind allerdings noch wesentlich mehr ent­halten, viele auch von mir, nur sind die wg Ausfall der Stichwortsuche nicht leicht zu finden. Evtl geht's von außerhalb des Forums bes­ser, wenn man ungefähr weiß, was man sucht.

Anzeige
AW: Nee, 'MaskOn' ist eine meiner ältesten UDFs ...
11.10.2018 21:08:02
Toni
Hi Luc, Mohrhuhn - das warrn noch Zeiten ^^
sorry, dass ich jetzt erst antworte, hatte viel um die Ohren heute.
Gewohnt umfangreich, vielen Dank für die ausführliche Darstellung. So werde ich - sicher auch andere hier - mir bei Bedarf die Funktionsweise präsent holen, Formeln sind in meinem Werkzeugkasten verankert, die Kürzel sind jetzt gut verständlich. Wäre vielleicht förderlich diese Info irgendwo im Code zu platzieren, soweit das so gewollt ist versteht sich und sobald du dann die endgültige (soweit es das überhaupt geben kann) Version rausgibst ...
Ich werde immer mal wieder testen zwischendurch und falls mir was auffällt (wovon ich zwar nicht ausgehe,aber falls mit was auffällt was dir noch nicht aufgefallen ist ^^ - die Hoffnung stirbt zuletzt) werde ich aufdringlich genug einen weg finden, dass hier im Forum kundzutun ^^.
Mit der Farbzählung hast du natürlich voll ins Schwarze getroffen. Das ist was, woran ich auch schon immer dran war, was häufig nachgefragt wird, weils im täglichen Arbeiten mit Dateien fürden User leicht zuhändeln ist. Alles was blinkt und mit Bildchen versehen wird, ist überdies immer gut an den Mann oder die Frau zu bringen ^^.
SO: jetzt schmeiße ich eben meine Tastatur aus dem Fenster,weil meine Leertaste sichzur Feststelltaste mausert grad und das mit mir nicht abgesprochen ist ... Es paaren sich hier Wörter mit Wörtern, die es wie sooft an anderer Stelle auch einfach nicht tunsollten
Herzlichstgedankt und gegrüßt, einen schönen Abend Dir!
Toni
Anzeige

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige