2017-03-22 2 views
3

ich eine Excel-Tabelle, wo ich den follwoing Befehl Zahlen aus einer Zelle zu erhalten, die eine Form Text enthält:aus einer Zelle alles, aber Zahlen entfernen

=MID(D2;SEARCH("number";D2)+6;13) 

Es ist für die Zeichenfolge „number“ sucht und bekommt die nächsten 13 Zeichen, die danach kommen. Aber einige Male die Ergebnisse bekommen mehr als die Zahl aufgrund der Tatsache, diese Texte in den Zellen nicht ein Muster aufweisen, wie im folgenden Beispiel:

62999999990 
21999999990 
11999999990 
6299999993) (
17999999999) 
21914714753) 
58741236714 P 
18888888820 

Wie vermeide ich alles andere als Zahlen nehmen oder wie entferne ich alles außer zahlen von was ich bekomme?

+0

Können Sie VBA oder nur Formeln verwenden? Was ist die erwartete Ausgabe? –

+0

Alles wird tun. Ich sehe, ich habe bereits 3 mögliche Antworten und ich werde sie während des Tages testen. –

Antwort

1

Sie können diese benutzerdefinierte Funktion (User Defined Function, UDF) verwenden, die nur die Zahlen in einer bestimmten Zelle enthält.

Code:

Function only_numbers(strSearch As String) As String 

    Dim i As Integer, tempVal As String 

    For i = 1 To Len(strSearch) 
     If IsNumeric(Mid(strSearch, i, 1)) Then 
      tempVal = tempVal + Mid(strSearch, i, 1) 
     End If 
    Next 

    only_numbers = tempVal 

End Function 

es nutzen zu können, müssen Sie:

  1. Drücken Sie ALT + F11
  2. Einfügen eines neuen Moduls
  3. Paste Code in Modul-Fenster
  4. Jetzt können Sie uns e die Formel =only_numbers(A1) in Ihrer Tabelle, indem Sie A1 zu Ihrem Datenspeicherort ändern.

Beispiel Bilder:

  • Einfügen von Code in Modulfenster:

enter image description here

  • Ausführen der Funktion

only_numbers = tempVal 

zu

only_numbers = Left(tempVal, 13) 

:

enter image description here

Ps .: Wenn Sie die Anzahl der Ziffern 13 abgrenzen wollen, können Sie die letzte Codezeile aus ändern Alternativ können Sie einen Blick auf eine this topic werfen, um zu verstehen, wie dies mit Formeln zu erreichen.

0

Wenn Sie nicht VBA wollen und würde Excel Formeln wie nur verwenden, versuchen Sie dieses:

=SUMPRODUCT(MID(0&MID(D2,SEARCH("number",D2)+6,13),LARGE(INDEX(ISNUMBER(--MID(MID(D2,SEARCH("number",D2)+6,13),ROW($1:$13),1))* ROW($1:$13),0),ROW($1:$13))+1,1)*10^ROW($1:$13)/10) 
+0

Ich habe es versucht, es ein paar Reihen von meinem ersten Blatt ausgewählt –

+0

Sorry, ich verstehe Ihren Kommentar nicht. Ich kann Ihre gesamte Umgebung nicht sehen. Ich nahm an, dass Sie diese Formel in dieselbe Zelle einfügen möchten, aus der Sie die Formel in Ihrem Kommentar kopiert haben. – z32a7ul

+0

Vielleicht müssen Sie ',' durch ';' ersetzen. Ich habe das Gebietsschema für US-Englisch in der Formel verwendet. – z32a7ul

1

Wenn Sie eine benutzerdefinierte Funktion gehen werden (aka UDF) dann alle durchführen die Taten; Verlassen Sie sich nicht auf die vorläufige Worksheet-Formel, um eine abgestreifte Zahl und möglichen Suffix-Text an die UDF zu übergeben.

In einem Standard-Code-Modul wie

Function udfJustNumber(str As String, _ 
         Optional delim As String = "number", _ 
         Optional startat As Long = 1, _ 
         Optional digits As Long = 13, _ 
         Optional bCaseSensitive As Boolean = False, _ 
         Optional bNumericReturn As Boolean = True) 
    Dim c As Long 

    udfJustNumber = vbNullString 
    str = Trim(Mid(str, InStr(startat, str, delim, IIf(bCaseSensitive, vbBinaryCompare, vbTextCompare)) + Len(delim), digits)) 

    For c = 1 To Len(str) 
     Select Case Asc(Mid(str, c, 1)) 
      Case 32 
       'do nothing- skip over 
      Case 48 To 57 
       If bNumericReturn Then 
        udfJustNumber = Val(udfJustNumber & Mid(str, c, 1)) 
       Else 
        udfJustNumber = udfJustNumber & Mid(str, c, 1) 
       End If 
      Case Else 
       Exit For 
     End Select 
    Next c 

End Function 

Ich habe Ihre Erzählung verwendet, um mehrere optionale Parameter hinzuzufügen. Sie können diese ändern, wenn sich Ihre Umstände ändern. Am bemerkenswertesten ist, ob mit der Option bNumericReturn eine echte Zahl oder ein Text zurückgegeben wird, der wie eine Zahl aussieht. Beachten Sie, dass die zurückgegebenen Werte rechtsbündig sind, da in dem folgenden bereitgestellten Bild echte Zahlen enthalten sein sollten.

enter image description here

Durch FALSE den sechsten Parameter liefert, ist der zurückgegebene Inhalt Text-that-Look-like-A-Nummer und nun linksbündig in der Arbeitsblatt-Zelle ist.

enter image description here

Verwandte Themen