Clever-Excel-Forum

Normale Version: Brauche Hilfe bei einer Formel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

ich bin neu hier im Forum und habe eine Frage an Euch.

Für ein Projekt brauche ich eine Formel. Wie hier auf dem Bild zu sehen möchte ich in die SpalteA verschiedene Straßennamen einfügen die ich mir aus der Datenbank ziehe. Um später eine Berechnung durchzuführen benötige ich die Straßennamen und Hausnummer getrennt. Kann man in Excel eine Formel schreiben die mir die Straße in SpalteB setzt und die Hausnummern in SpalteC ? Außerdem sollten bei doppelten Hausnummern (wie in SpalteA2 zu sehen) die letzte Zahl und das Minuszeichen gelöscht werden.

Kann mir bitte jemand dabei helfen ? Ich werde noch verrückt, weil ich keine Lösung finde :s


[
Bild bitte so als Datei hochladen: Klick mich!
]
http://www.herber.de/excelformeln und bitte suchen .../formeln.html?welcher=350
Hi,

(09.03.2017, 18:14)lupo1 schrieb: [ -> ]http://www.herber.de/excelformeln und bitte suchen .../formeln.html?welcher=350

ich glaube, das ist noch komplizierter und mit den dort vorhandenen Formeln nicht ganz lösbar, siehe Beispiele:

Tabelle1
ABC
1Müllerstraße 120-128Müllerstraße120-128
2Müllerstraße 120Müllerstraße120
3Müllerplatz123#WERT!#WERT!
4Müllerplatz124-128Müllerplatz24-128

verwendete Formeln
Zelle Formel Bereich N/A
B1:B3=LINKS(A1;FINDEN("#";WECHSELN(A1;" ";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))-1)
B4=LINKS(A4;LÄNGE(A4)-VERWEIS(2;1/LINKS(RECHTS(A4&1;SPALTE(A4:Z4)))/ISTFEHLER(SUCHEN(".";RECHTS(A4&0;SPALTE(A4:Z4))));SPALTE(A1:Z1)-1))
C1:C4=RECHTS(A1;LÄNGE(A1)-LÄNGE(B1)-1)
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.07 einschl. 64 Bit

Hallo,

die Formellösung funktioniert doch:

Tabelle1

ABC
1Müllerstraße 120-128Müllerstraße 120-128
2Müllerstraße 120Müllerstraße 120
3Müllerplatz123Müllerplatz123
4Müllerplatz124-128Müllerplatz124-128
Formeln der Tabelle
ZelleFormel
B1=LINKS(A1;LÄNGE(A1)-VERWEIS(2;1/LINKS(RECHTS(A1&1;SPALTE(A1:Z1)))/ISTFEHLER(SUCHEN(".";RECHTS(A1&0;SPALTE(A1:Z1))));SPALTE(A1:Z1)-1))
C1=GLÄTTEN(WECHSELN(A1;B1;))

Bezogen auf das Beispiel von Ralf wären auch diese benutzerdefinierten Funktionen eine Option:

Tabelle1

ABC
1Müllerstraße 120-128Müllerstraße120-128
2Müllerstraße 120Müllerstraße120
3Müllerplatz123Müllerplatz123
4Müllerplatz124-128Müllerplatz124-128
Formeln der Tabelle
ZelleFormel
B1=StrName(A1)
C1=HsNr(A1)

Code:
Public Function PosHsNrInStrasse(Strasse As String) As Integer
'http://www.office-loesung.de/viewtopic.php?t=7147
    Dim Zaehler     As Integer
    Dim Laenge      As Integer
    Dim X           As String
    Dim Ergebnis    As String

    Laenge = Len(Strasse)
    PosHsNrInStrasse = 0
'von rechts nach links durch Strassennamen gehen
'bis auf die 3 linken Zeichen damit Strassen, die mit Zahl beginnen
'(z.B. 3. Terwestenweg) nicht als Hausnummer erkannt werden
    For Zaehler = Laenge To 3 Step -1
        X = Mid(Strasse, Zaehler, 1)             'aktuell zu prüfendes Zeichen
        If IsNumeric(X) Then                 'prüfen, ob Zeichen eine Zahl ist
            PosHsNrInStrasse = InStr(Strasse, X)            'Position der Zahl
        End If
    Next
End Function

Public Function HsNr(Strasse As String) As String
    Dim pos     As Integer
    Dim Laenge  As Integer
  
    pos = PosHsNrInStrasse(Strasse)
    Laenge = Len(Strasse)
    If pos > 0 Then
        HsNr = Right(Strasse, Laenge - pos + 1)
      Else
        HsNr = ""
    End If
    'MsgBox HNr
End Function
Public Function StrName(Strasse As String) As String
    Dim pos     As Integer
    Dim Laenge  As Integer
  
    pos = PosHsNrInStrasse(Strasse)
    Laenge = Len(Strasse)
    If pos > 0 Then
'Trim: führende und nachgestellte Leerzeichen entfernen
        StrName = Trim(Left(Strasse, pos - 1))
      Else
        StrName = Strasse
    End If
    'MsgBox StrName
End Function
Hallo ,

hier mal noch eine Alternative Formel:
Tabelle1

ABC
1
2Dingsbums113dDingsbums113d
3Dadaistmus 124Dadaistmus 124
4Hastiger 15-55Hastiger15-55
5Straße des 17. Juni 35 Straße des 17. Juni35 
6
Formeln der Tabelle
ZelleFormel
B2{=LINKS(A2;MAX(WENN(ISTZAHL(SUCHEN("???" &ZEILE($1:$9);A2));SUCHEN("???" &ZEILE($1:$9);A2))))}
C2=GLÄTTEN(WECHSELN(A2;B2;""))
B3{=LINKS(A3;MAX(WENN(ISTZAHL(SUCHEN("???" &ZEILE($1:$9);A3));SUCHEN("???" &ZEILE($1:$9);A3))))}
C3=GLÄTTEN(WECHSELN(A3;B3;""))
B4{=LINKS(A4;MAX(WENN(ISTZAHL(SUCHEN("???" &ZEILE($1:$9);A4));SUCHEN("???" &ZEILE($1:$9);A4))))}
C4=GLÄTTEN(WECHSELN(A4;B4;""))
B5{=LINKS(A5;MAX(WENN(ISTZAHL(SUCHEN("???" &ZEILE($1:$9);A5));SUCHEN("???" &ZEILE($1:$9);A5))))}
C5=GLÄTTEN(WECHSELN(A5;B5;""))
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

VG
Steffen
Moin!
Auch wenn ich Excelformeln sehr schätze.
Besser als die beste Prothese ist es doch, das Bein gar nicht erst zu verlieren.  :21:
Zitat:Wie hier auf dem Bild zu sehen möchte ich in die SpalteA verschiedene Straßennamen einfügen die ich mir aus der Datenbank ziehe.

Da solltest Du ansetzen, beim Import!

Gruß Ralf
Hi Peter,

(11.03.2017, 16:10)Peter schrieb: [ -> ]die Formellösung funktioniert doch:

nicht ganz: er wollte bei 120-128 nur die 120 als Ergebnis.
Hallo,

das habe ich übersehen, aber das könnte man dann noch mit Text-Funktionen wie =LINKS(A1;FINDEN("-";A1)-1) o.ä. erschlagen.