Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Aus String einzelne Begriffe ziehen

Begonnen von Micharius, September 27, 2018, 13:42:35

⏪ vorheriges - nächstes ⏩

Micharius

Hallo zusammen
Ich kriege in einer Tabelle Firmennamen angeliefert, zum Beispiel "Max Muster AG" oder "Heinrich Hörst GmbH".
Was müsste ich in eine Funktion schreiben, dass ich als String nur a) die ersten beiden Wörter und b) nur das erste Wort zurück erhalte?
Ihr habt natürlich recht: Nachlesen und Ausprobieren wäre hier der vermutlich schlauste Ansatz, aber ich seh's wirklich nicht grad so  ::)
Beste Grüsse
Micharius

Beaker s.a.

Hallo Micharius,
Schau dir in der OH die Methode "Split" an.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Micharius

@Beaker: Wink mit dem Zaunpfahl verstanden  8)

Mit diesem Code kann ich einen Firmennamen à la "Max Muster AG" auswerten, und erhalte je nach Wunsch das erste oder zweite Worte retour:

Function FirmenNamenSplitten(strFirmennamen As String, bolAnzahlWoerter As Boolean) As String

Dim strArray() As String

strArray = split(strFirmennamen, " ")

Select Case bolAnzahlWoerter

    Case 0
    FirmenNamenSplitten = strArray(0)

    Case 1
    FirmenNamenSplitten = strArray(0) & " " & strArray(1)

End Select

End Function


Vermutlich codetechnisches Gebastel, über Optimimierungsvorschläge würde ich mich natürlich freuen...

Grüsse

Micharius

Lachtaube

Split, Filter und Join sind rechenintensive Anweisungen. Wenn sich die Datenmenge in Grenzen hält, kannst Du soetwas mit in einer Abfrage gefilterten Daten veranstalten.

Aus dem VBA-Direktfenster:?Join(VBA.Filter(Split("Max Muster AG", " "), "AG", False))
Max Muster
Grüße von der (⌒▽⌒)

Milvus

Ich geb da gern noch mal was zu.
Probier mal das:

dim o as object, i as long

for each o in split(...)
     debug.print o
     i=i+1
     select case i
          case 1,2,3
               ....
          case else
              exit for
     end select
next o