# In Excel 2003 nach einer bestimmten Zahl in einer Zeichenfolge suchen



## Nathan (8. November 2012)

Hallo, 

ich habe folgendes Problem und kriege es nicht gebacken es zu lösen: 


```
3, 2.1, 4.3, 5.1, 6.1
```

Mein Ziel ist es die erste  "3" Rauszufiltern und in einer weiteren Spalte auszugeben. Das Problem ist, dass mehrere 3'en in dem Datensatz enthalten sind. 

Ich habe bisher versucht mit der "TEIL" und "FINDEN" Funktion zu arbeiten, bin aber daran erfolgreich gescheitert. ;-) 

Mein gedanklicher Ansatz ist: 

Die Zahl die rausgefiltert werden soll, in dem Fall die 3, darf kein "." vor sich enthalten. So würde ich das zumindest programmieren. In Excel weiß ich aber nicht welche Funktionen ich dafür nutzen soll... 

Also im Prinzip müsste der Code in Pseudo Form so lauten: 

Wenn die gesuchte Zahl vor sich keinen Punkt enthält, dann packe sie in die Spalte XYZ; 

Für ein paar Tipps wäre ich dankbar****** 

Greets


----------



## Yaslaw (8. November 2012)

Macht irgendwie keinen Sinn. Du suchst die 3 um die 3 rauszuschreiben? Dann lasse s doch einfach und schreibe die 3 in die Spalte XY


----------



## Nathan (8. November 2012)

Ich kann ja nicht bei 100 000 Datensätzen jeweils die 3 manuell raussuchen und rausschreiben. Ich will wissen, wo ist die 3 drin. Und dann schreibe ich in die benachbarte Spalte die 3 rein. 

Dann weiß ich direkt auf ein Blick, aha in dieser Spalte also in diesem Datensatz ist die 3 drin. Dieser Datensatz ist wichtig für mich und damit muss ich weiter arbeiten. 

Die 3 ist übrigens nur ein Beispiel, im Endeffekt möchte ich dann natürlich dort auf ein Feld verweisen. D.h. ich gebe in einem Feld oben eine Zahl ein nach der Gefiltert wird. 

Und ich such halt nicht irgendeine 3, sonder die 3 die "alleine" steht. Es gibt ja auch eine 4.3 oder 2.3. Die sind aber nicht interessant wie gesagt.

Ich hoffe es ist jetzt klar geworden was mein Ziel ist, wenn nicht bitte nachhaken.

Danke 

Ein paar weitere Datensätze, welche das Problem verdeutlichen: 

```
2, 2.3
2, 3
2, 3, 2.1
2, 3, 5.1
2, 3, 8
```


----------



## Yaslaw (8. November 2012)

Erstelle in deinem Excelsheet ein Modul und kopiere die folgende Funktion hinein

```
'/**
' * Splittet ein String anhand eines Trennzeichens in eine Liste und sucht einen bestimmten Wert
' * @param  Double      Wert der gesucht werden soll
' * @param  String      Liste mit Trennzeichen
' * @param  [delemiter] Optional: Trennzeichen der Liste. Standart ein Komma
' # @return Die Zahl wenn sei gefunden wurde, ansonsten Null
' */
Public Function findInSet(ByVal search As Double, ByVal searchIn As String, Optional ByVal delemiter As String = ",") As Variant
    Dim items()  As String
    Dim item    As Variant
    Dim itemD   As Double
    
    ' Standart setzen
    findInSet = Null
        
    ' String in ein Array splitten
    items = Split(searchIn, delemiter)
    
    'Jedes Item einzeln überprüfen ...
    For Each item In items
        itemD = CDbl(Trim(item))
        If itemD = search Then
            '...und bei Treffer den Rückgabewert setzen und dei Schleife verlassen
            findInSet = itemD
            Exit For
        End If
    Next item
    
End Function
```

Anschliessend kannst du die Funktion findInSet() in deinen Exclezeilen wie gewohnt anwenden

```
=findInSet(3;A1)
```


----------

