Autor
|
Thema: wort aus a1 in b1 (1720 mal gelesen)
|
Elchkuh123 Mitglied
Beiträge: 3 Registriert: 18.05.2008
|
erstellt am: 18. Mai. 2008 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Problem mit Excel Ich möchte verschiedene Kontaktdaten in A1, A2, A3...usw auflisten, allerdings nur den Ortsnamen in B1 ausgegeben bekommen. Beispiel: Martin Müller Frankfurter Straße 4 56341 Filsen ist A1 Nun möchte ich das letzte Wort, sprich Filsen bzw allgemein den Ortsnamen, in b2 erhalten. Mit dem finden und anzahl_zeichen komme ich nicht weiter, da ich ja allgemein einen Ortsnamen erhalten möchte. Gibt es da eine Funktion, mit der ich das letzte Wort bzw Inhalt zwischen 2 letzten Leerzeichen erhalte? Schonmal vielen Dank für die Antwort, Elchkuh123 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
champagnierle Mitglied -
Beiträge: 54 Registriert: 23.04.2008
|
erstellt am: 18. Mai. 2008 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für Elchkuh123
Hi Elchkuh, in Excel fällt mir da keine Lösung ein. Mein Vorschlag wäre, die Excel-Datei als csv zu exportieren und eine Programmiersprache darauf loszulassen. Ich selbst löse sowas in Perl. Das Programm wäre: Code:
#/usr/bin/perl -w use strict;print "PROGRAMMBEGINN\n"; my (@Adressen,@NeueAdressen); #Einlesen der kompletten Datei in ein Array aus Zeilen open(ADRESSEN,"C:/Adressen.csv"): @Adressen=<ADRESSEN>; close(ADRESSEN); #Zeilenweise Abarbeitung foreach my $Adresszeile(@Adressen) { #Aufsplitten der Zeile in die einzelnen Worte; #Trennzeichen ist ein Whitespace - also ein Leer- oder Steuerzeichen my @tmp_Adresse=split(/\s/,$Adresszeile); #Wenn die Zeile nicht leer war, dann wird sie im neuen Array gespeichert push(@NeueAdressen,"$Adresszeile\;$tmp_Adresse[$#tmp_Adresse]") if length(@tmp_Adresse)>0; } #Wegspeichern des neuen Arrays open(NEUEADRESSEN,">C:/Neue_Adressen.csv"); #Einfügen eines Zeilenumbruches nach jeder Adresszeile print NEUEADRESSEN map($_."\n",@NeueAdressen); close(NEUEADRESSEN); print "PROGRAMMENDE\n";
Allerdings ungetestet. Die Befehle werden sehr ausführlich unter http://de.selfhtml.org/perl/index.htm erklärt. HTH Marc ------------------ ============================= Wer Rechtschreibfehler findet, der darf sie behalten ============================= 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: 18. Mai. 2008 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Elchkuh123
Zitat: Original erstellt von Elchkuh123: [B]Gibt es da eine Funktion, mit der ich das letzte Wort bzw Inhalt zwischen 2 letzten Leerzeichen erhalte?
untenstehende Formel exthrahiert das Letzte Wort aus einem langen String, Glätten wird verwendet um eventuelle Leerzeichen nach dem letztem Wort abzuschneiden. Code: =GLÄTTEN(RECHTS(A1;LÄNGE(A1)-VERWEIS(LÄNGE(GLÄTTEN(A1));FINDEN(" ";A1;ZEILE(A:A)))))
um bestimmte Wörter zwischen 2 Leerzeichen aufzulösen verweise ich nach http://www.excelformeln.de/formeln.html?welcher=301 HTH
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: 18. Mai. 2008 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für Elchkuh123
Hallo Elchkuh123, willkommen auf CAD.de! Eine schnell-und-schmutzig-Lösung via VBA: Nachstehenden Code in ein beliebiges Modul kopieren, LeseRuf starten. Code: Private Sub LeseRuf() Dim str As String str = ActiveSheet.Range("A1") str = PLZauslesen(str) MsgBox str End SubPrivate Function PLZauslesen(str As String) As String Dim strTemp As String Dim i As Integer strTemp = str i = 1 Do While Not IsNumeric(Left(strTemp, 1)) strTemp = Right(str, i) i = 1 + i Loop PLZauslesen = Mid(str, Len(str) - (i + 2), 5) End Function
Eine Lösung ohne Programmierung gibt's bei den Profis von excelformeln.de: Kopiere Dir die angegebene Formel vollständig in Zelle B2, entferne die geschweiften Klammern vorne { und hinten }, und schließe die (so genannte Matrix-)Formel mit Strg + Shift + Enter ab - evtl. in einer Hilfsspalte, die Du anschließend ausblenden kannst?!Für Dein Beispiel liefert das diese "Zahl": 4 56341. Darüber gehst Du dann mit =RECHTS(wertinderhilfsspalte;5) - die PLZ ist immer fünf Zeichen lang (außer, es hat sich wer vertippt) und die Hausnummer steht immer vor der PLZ. Nach dieser Kette kannst Du suchen - und den Text (Ortsnamen), der dahinter steht, auslesen. Im Einzelnen also: - Zelle B1: =TEIL(LINKS(A1;MAX(WENN(ISTZAHL(TEIL(A1;SPALTE(1:1);1)*1);SPALTE(1:1))));VERGLEICH(WAHR;ISTZAHL(TEIL(A1;SPALTE(1:1);1)*1);0);LÄNGE(A1)) als Matrixformel
- Zelle C1: =RECHTS(B1;5) liefert die PLZ alleine
- Zelle D1: =TEIL(A1;FINDEN(C1;A1;1)+6;LÄNGE(A1)-FINDEN(C1;A1;1))
Das sollte beliebige Ortsnamen ausweisen, Du kannst die Formeln nach unten kopieren. Die Spalten B und C ausblenden - voilà.Gegenfrage - bevor Du Dir zu viel Mühe machst: Wo kommen die Werte her? Wie werden sie eingelesen? Was hast Du anschließend damit vor? Wäre es sinnvoller, die Zeichenkette vorher zu zerlegen? Und vor lauter Geschreibe war Thomas schneller. Frederik ------------------ DIN1055.de | Lastannahmen für Anwender Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 18. Mai. 2008 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für Elchkuh123
Tag zusammen, Und wenn schon alle da sind, will ich auch noch ;-) =RECHTS(A1;(LÄNGE(A1)+1)-FINDEN("#";WECHSELN(A1;" ";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))-1) Von Rechts alles bis zum ersten Leerzeichen, basiert auch auf excelformeln.de, aber ohne Matrix. Fehlt uns jetzt noch ne Variante? Weiter schönes Wochenende ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|