2009-04-03 4 views
2

Gibt es ein intelligentes Makro in Excel (2000 aufwärts), um den letzten Teil einer Zeichenkette zu entfernen, wenn es ein bestimmtes Trennzeichen hat?Zeichenketten in Excel abschneiden - gibt es eine Funktion, um den letzten Teil der Zeichenkette nach dem Trennzeichen zu entfernen

Wenn der Separator nicht da ist, sollte die Zeichenfolge

Zum Beispiel erhalten bleiben, denn „“

abcd.1   => abcd 
abcd   => abcd 

Ich glaube, ich etwas mit einer Kombination aus Instr und Mid und so schreiben könnte, aber ich bin neugierig, ob es eine intelligentere Abkürzung für sie, wie „Strip (‚abcd.1‘;‘. ')" oder so.

Antwort

7

Ich glaube nicht, dass es eine Funktion gibt, die das für Sie tun wird.

Sie können sich wahrscheinlich so etwas wie folgt verwenden:

 

=LEFT(A1,IF(ISERROR(SEARCH(".",A1)),LEN(A1),SEARCH(".",A1) - 1)) 

Dadurch werden alle Zeichen nach dem ersten Instanz des seperator entfernen, wenn Sie aus der letzten Instanz entfernen möchten müssen Sie Ihre eigene Funktion schreiben Suche nach der umgekehrten Zeichenfolge.

http://www.techonthenet.com/excel/formulas/index.php

+0

Danke, die Liste der Funktionen war informativ! Danke auch für den Ausdruck, es ist gut für zukünftige Situationen zu wissen, mein derzeitiger Bedarf war für so wenige Zeilen, dass nur eine eingebaute Funktion es wert war, danach zu suchen, aber die Notwendigkeit wird wieder erscheinen, so dass Ihre Lösung geschätzt wird. – Brummo

2

Sie können Sie eigene User Defined Function (UDF) für diese auch erstellen:

Eine vollständige Liste der verfügbaren Funktionen finden Sie unter.

Function Strip(ByVal oCell As Range, ByVal sSeperator As String) As String 

    Dim iPos As Integer 
    Dim sValue As String 

    sValue = oCell.Value 
    iPos = InStr(sValue, sSeperator) 

    If (iPos <= 0) Then 
     Strip = sValue 
    Else 
     Strip = Left(sValue, iPos - 1) 
    End If 

End Function 

Dann können Sie das in Ihrer Formel Leiste aufrufen mit

= Strip (A1,“. ")

+0

Vielen Dank, dass Sie sich die Zeit genommen haben, zu antworten, aber ich vermute, dass ich für eine UDF eine Vorlage in eine Vorlage einfügen müsste, damit neue Tabellenblätter erstellt werden können und ich "Makros zulassen" muss ", was ich vielleicht nicht kann. – Brummo

+0

Mit "fähig" ich meine, es ist nicht praktisch für mich, dies in meiner aktuellen Situation zu tun – Brummo

+0

Die Bereitstellung von diesem könnte ein Problem sein, wenn Sie es über mehrere Blätter verwenden möchten, würde ich empfehlen, ein AddIn zu erstellen. – bendewey

2

Sie abwechselnd die Datenspalte verwenden kann, klicken Sie auf die Schaltfläche" text to column option ", wählen Sie" delimited ", drücken Sie next und wählen Sie das Symbol Ihrer Wahl, um die Daten zu teilen (in Ihrem Fall '.'). Ihre Daten sollten jetzt in zwei Spalten aufgeteilt sein. Löschen Sie die zweite Spalte :)

0

‚Mit SPLIT in einer Funktion

Public Function extractName (parmField As String, Optional parmSplitChar As String = "") As String

Dim vSplit As Variant 

vSplit = Split(parmField, parmSplitChar) 
extractName = vSplit(0) 

End Function

+0

Wenn dies aus der Dokumentation stammt, fügen Sie bitte einen Link zu den entsprechenden Dokumenten bei. –

0

Dies funktioniert für die deutsche Version von Excel.

=LINKS(A1;WENN(ISTFEHLER(SUCHEN(".";A1));LÄNGE(A1);SUCHEN(".";A1) - 1)) 
Verwandte Themen