Autor
|
Thema: Text rausschneiden (435 / mal gelesen)
|
Tom2005 Mitglied Elektrotechniker
Beiträge: 1318 Registriert: 12.05.2005 EPLAN 5.70 prof. EPLAN Electric P8
|
erstellt am: 13. Sep. 2022 15:16 <-- editieren / zitieren --> Unities abgeben:
Ich habe folgende Ausgangssituation in einer Zelle (immer vierzeilig): 123456 Hersteller Artikelbeschreibung Artikelnr. des Herstellers Kann ich ähnlich der Funktionen LINKS oder RECHTS diese Zeilenumbrüche erfassen? Konkret will ich nur die letzte Zeile in eine neue Zelle übertragen bzw. auch die Zeile 3 in eine separate andere Zelle. Diese Zellumbrüche sind per Texteingabe mit Alt+Enter eingegeben worden. Version Excel 365
------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 13. Sep. 2022 17:39 <-- editieren / zitieren --> Unities abgeben: Nur für Tom2005
Hallo Tom, Leider gibt es die Rückwärtssuche bei den Standard-Excelfunktionen nicht. Ich habe mir hier in einer Allgemeinen Toolsmappe eine Funktion gelegt, die genau das macht:
Code: Function RevFind(SuchText As String, Text As String) As Long ' Sucht den Suchtext beginnend vom Ende des Textes ' Rückgabe: Stelle innerhalb des Textes RevFind = VBA.InStrRev(Text, SuchText) End Function
In der Exceltabelle brauchst dann nur die Formel: =RECHTS(D6;LÄNGE(D6) - revfind(ZEICHEN(10);D6)) diese gibt die letzte Zeile aus Der vierzeilige Text wäre in diesem Beispiel in Zelle D6 Für die vorletzte Zeile ergäbe es danach: =TEIL(LINKS(D6;revfind(ZEICHEN(10);D6)-1);revfind(ZEICHEN(10);LINKS(D6;revfind(ZEICHEN(10);D6)-1))+1;LÄNGE(LINKS(D6;revfind(ZEICHEN(10);D6)-1))) Natürlich könnte man in VBA auch den ganzen Text in einzelne Zeilen zerlegen und die entsprechende, wenn vorhanden, ausgeben Aber das wäre eine andere Funktion Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 778 Registriert: 18.05.2005 SolidWorks 2020 x64 SP3.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 21H1 Microsoft Office 365 ProPlus Microsoft Visual Studio Enterprise 2022
|
erstellt am: 13. Sep. 2022 18:23 <-- editieren / zitieren --> Unities abgeben: Nur für Tom2005
Hallo Tom Aufteilen von Text auf verschiedene Spalten mit Funktionen Als Formeln: 1.Zeile =LINKS(A1;SUCHEN(ZEICHEN(10);A1;1)) 2.Zeile =TEIL(A1;SUCHEN(ZEICHEN(10);A1;1)+1;SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;1)+1)-(SUCHEN(ZEICHEN(10);A1;1)+1)) 3.Zeile =TEIL(A1;SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;1)+1)+1;SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;1)+1)+1)-(SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;1)+1))) 4.Zeile =RECHTS(A1;LÄNGE(A1)-SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;SUCHEN(ZEICHEN(10);A1;1)+1)+1)) Mit eigener Splitt-Funktion (VBA)
Code: Function Splitten(expression As String, delimiter As String, index As Long) As String Splitten = VBA.Split(expression, delimiter)(index-1) End Function
Aufruf für 3. Zeile =Splitten(A1;ZEICHEN(10);3) Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom2005 Mitglied Elektrotechniker
Beiträge: 1318 Registriert: 12.05.2005 EPLAN 5.70 prof. EPLAN Electric P8
|
erstellt am: 15. Sep. 2022 06:32 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antworten, das kommt meiner Idee sehr sehr nahe. Natürlich sind die Rohdaten auch nicht stringend gefüllt, so dass ich nacharbeiten muss, aber das erspart mir viele manuelle Tätigkeiten. ------------------
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: 21. Sep. 2022 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für Tom2005
Hi Tom, es geht auch ohne VBA-Function: für Zeile 3 diese Formel: =XMLFILTERN("<x><g>"&WECHSELN(A1;ZEICHEN(10);"</g><g>")&"</g></x>";"//g[3]") für Zeile 4 diese Formel =XMLFILTERN("<x><g>"&WECHSELN(A1;ZEICHEN(10);"</g><g>")&"</g></x>";"//g[4]") Bis später, Karin [Diese Nachricht wurde von Beverly am 21. Sep. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |