Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
VBA: mehrere Strings in String suchen
zurück: Filtern und Kopieren von Werten wenn Bedingung erfüllt weiter: Listbox füllen bringt ab Zeile 10 eine Fehlermeldung Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Cylie
Gast


Verfasst am:
29. Apr 2014, 11:57
Rufname:

VBA: mehrere Strings in String suchen - VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hallo an die Leser,

ich habe hier schon ein wenig rumgestöbert, aber irgendwie nichts richtiges gefunden. Ich habe einen String bestehend aus Zahlen mit mehreren Bindestrichen.

Hinzu kommt, dass ich mehrere Teilstrings habe. Ich will nun die Teilstrings mit dem Komplettstring vergleichen und diesen dann gegebenenfalls in eine andere Zelle schreiben sofern alle Teilstrings in diesem Kompletten vorkommen.

Meine Idee dazu: InStr...

Leider funktioniert es nicht so ganz, da er irgendwie immer nur das erste Zeichen des Teilstrings überprüft und nicht den kompletten. Was kann ich da tun?

Code:
    For i = 2 To 2000
       
        For j = 2 To 2000
            suchStr1 = Tabelle1.Cells(j, 4).Value
            If InStr(1, Tabelle1.Cells(i, 16).Value, suchStr1) Then
                suchStr2 = Tabelle1.Cells(j, 5).Value
                If InStr(1, Tabelle1.Cells(i, 16).Value, suchStr2) Then
                    suchStr3 = Tabelle1.Cells(j, 6).Value
                    If InStr(1, Tabelle1.Cells(i, 16).Value, suchStr3) Then
                       
                        Tabelle1.Cells(j, 9).Value = Tabelle1.Cells(i, 16).Value
                    End If
                   
                End If
               
            End If

        Next j

    Next i


Grüße Baldur
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
29. Apr 2014, 13:09
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Razz

Hallo,

hier ein Lösungsvorschlag fürs Suchen und Kopieren. Das Ziel der Kopie muß noch angepasst werden.

Code:


Option Explicit
Option Base 1

Sub TesteString()
    'Teststring steht in Spalte A ab Zeile 2
    'Suchstrings stehen in Spalten D bis F ab Zeile 2
    'ohne Fehlerbehandlung
   
    Dim objRange    As Range
    Dim objZiel     As Range
    Dim objSheet    As Worksheet
    Dim I           As Long
    Dim J           As Long
    Dim K           As Long
    Dim boTest      As Boolean
   
    Set objSheet = ActiveSheet
   
    With objSheet
       
        '1999 Teststrings durchsuchen
        For K = 2 To 2000
            boTest = False
            'Holen des Testrings
            Set objRange = .Range(.Cells(K, 4), .Cells(K, 4))
           
            'prüft für jeden Teststring 1999 Teilstring-Gruppen auf Übereinstimmung
            For J = 2 To 2000
               
                'die 3 Teilstrings aus Spalte D bis F holen
                For I = 4 To 6
                   
                    'Test auf Treffer
                    If SucheString(objRange, .Cells(J, I).Value) = True Then
                        boTest = True
                    Else
                        boTest = False
                        Exit For
                    End If
                   
                Next I
           
                'Prüfen auf Identität
                Select Case boTest
                    Case True
                        'jedes objRange mit Übereinstimmung kopieren
                        'Set objZiel = .Range(.Cells(x,y), .Cells(x,y))
                        'Ziel.Value = objRange.Value
                    Case False
                        'nicht kopieren
                End Select
               
            Next J
        Next K
    End With

    Set objSheet = Nothing

End Sub

Private Function SucheString(ByVal objRange As Range, ByVal strString As String) As Boolean
   
    If InStr(1, objRange.Value, strString, 1) > 0 Then SucheString = True

End Function


Viel Erfolg
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Cylie
Gast


Verfasst am:
29. Apr 2014, 13:48
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Erst einmal vielen Dank Little Hobbit,

da ich leider noch am Anfang der Programmierung stehe, verstehe ich diesen Code nicht so ganz bzw. glaube, dass ich es doof erklärt habe.

Hier mal ein Beispiel:

eindeutige Zahl----String----------------TestString1---------TestString2----TestString3
050521526---------541/u/10/B/340-----541-----------------10--------------340
596854856---------859/u/00/B/280-----859-----------------00--------------280

String für die Zuordnung der eindeutigen Zahl:
541-10-340

Ich habe einen String und eine eindeutige Zahl dazu. Den String hab ich gesplittet anhand der Sonderzeichen zu den einzelnen Teststrings. Die Teststrings wollte ich nun mit den unten zusammengesetzten String vergleichen und bei einer eindeutigen Übereinstimmung soll die eindeutige Zahl den Zusammengesetzten String zugeordnet werden.

Ich hoffe es ist so verständlicher. Vllt kann man es auch mit deiner Lösung schon so Abbilden?

Beste Grüße

Cylie
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
29. Apr 2014, 14:51
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hallo,

stehen die Strings, denen die eindeutige Zahl zugeordnet werden soll, in einer eigenen Tabelle?

Stehen die Zuordnungs-Strings dort in Spalte A ab Zeile 2?

Soll die passende eindeutige Zahl in Spalte B kopiert werden?

In welcher Spalte steht die eindeutige Zahl?

Für die Schleife muß schon klar sein, ob der String für die Zuordnung im gleichen Tabellenblatt steht oder in einem anderen.

Kommt es vor, daß zu einem Zuordnungs-String mehrere Suchstring-Gruppen passen oder kann die Suche nach dem ersten Fund abgebrochen werden?

Ist die Reihenfolge der Suchstrings bei der Suche zu beachten?
Treffer bei 150-13-24 mit Suchstring-Gruppe 150, 13, 24
Kein Treffer bei 150-13-24 mit Suchstring-Gruppe 13, 24, 150

Wäre es nicht auch möglich, aus den Suchstrings den Zuordnungsstring zusammenzusetzen und diesen dann zusammen mit der eindeutigen Zahl in ein neues Tabellenblatt zu schreiben. Das wäre viel schneller, da die ganze Sucherei entfallen könnte.


Gruß
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Cylie
Gast


Verfasst am:
29. Apr 2014, 15:11
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hey Little Hobbit,

ich habe im Prinzip 2 Listen. In der einen Liste habe ich eine Artikelbezeichnung + einer dazugehörigen eindeutigen Zahl für jeden Artikel. Ich hab es in Spalte A die Bezeichnung und in Spalte B die eindeutige Zahl, beginnend ab Zeile 2 (kann aber beliebig verschoben werden). Das sieht folgendermaßen aus:

Saplte A ------------------ Spalte B
585,F15,R,50,630 ------- 584859658

Aus der Spalte A wo quasi die ganzen Artikelbezeichnungen stehen habe ich den String aufgesplittet um daraus die einzelnen Informationen zu bekommen.
Diese bestehen 585, 15 und 630. Das habe ich mit jeder Zeile so gemacht. Diese Werte stehen einzeln in Spalte D,E und F.

Nun habe ich noch eine zweite Liste. Diese Liste besteht aus den ganzen Artikelnummern. Eine Artikelnummer setzt sich zum Teil aus den 3 selektierten Teilstrings zusammen (ab und zu wird der 2te nicht benötigt). Die Artikelnummer würde so aussehen.

Artikelnummer: 585-15-630

Ich brauche jetzt eine Zuordnung der Artikelnummern zu der eindeutigen Zahl.

Meine Idee war es, das über die Teilstrings zu lösen und diese dann in der Artikelnummer zu suchen und die eindeutige Zahl der Artikelnummer zuzuordnen.

Ich habe die Artikelnummern ebenfalls in der gleichen Tabelle, kann aber aus einer komplett anderen Exceldatei oder einem anderen Tabellenblatt genommen werden (lässt sich ja beliebig verschieben).

Zu deinen Fragen:

Strings sind momentan in einer Tabelle.
Strings stehen in Zeile 2 und folgende, können aber verschoben werden.
Eindeutige Zahl steht bereits in Spalte B.

Ich weiß nicht ob meine Idee optimal ist. Da ich jedoch Anfänger bin war es für mich eine mögliche Lösung (hab gedacht es wäre leichter). Falls du einen besseren Vorschlag oder eine andere tolle Idee hast, bin ich gerne dafür offen Smile.

Beste Grüße und danke für dein Bemühungen.

Cylie
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
29. Apr 2014, 15:39
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hallo,

wenn es möglich ist, aus den 3 Suchtrings die Artikelnummer zusammenzusetzen und diese Artikelnummer zusammen mit der zugehörigen eindeutigen Zahl in eine neue Tabelle zu schreiben, ist das eindeutig der einfachste und schnellste Weg.

Das geht aber nicht, wenn es zusätzliche Artikelnummern (z.B. 99-13-234) gibt, die in Tabelle mit den Suchstrings nicht vorkommen.


Gruß
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Cylie
Gast


Verfasst am:
30. Apr 2014, 09:25
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hey Little Hobbit,

ich kann sie leider nicht komplett zusammensetzten mit den 3 Teilstrings. Daher dachte ich wenn ich die Teilstrings in den Artikelnummern suche und alle 3 übereinstimmen könnte ich eine Zuordnung vornehmen. Ist ja auch denkbar nur irgendwie klappts nicht, leider. Sad

Grüße Cylie
Cylie
Gast


Verfasst am:
30. Apr 2014, 10:05
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Ich habe meine Lösung von gestern nochmal überarbeitet.

Die Zuordnung sollte jetzt funktionieren. Es besteht jetzt noch ein Problem bei dem ich momentan nicht weiterkomme.

Ich habe in einem TeilString teilweise Buchstaben am Ende zu stehen. Wie kann ich alle Buchstaben entfernen aus einem String ohne Replace zu benutzen?

Beste Grüße

Cylie
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
30. Apr 2014, 13:48
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hallo,

wenn Teilstrings auch Buchstaben enthalten, die nicht gebraucht werden, dann muß jeder Teilstring getestet werden und ggf. sind die Buchstaben zu entfernen
So etwas leistet die nachstehende Funktion.
Für den Einsatz gibt es 2 Möglichkeiten:
1. Vorab alle Teilstings testen und bereinigt in die Zelle zurückschreiben
2. Bereinigen des Teilstrings während der Suche nach den Artikelnummern.

Code:

Private Function TestString(ByVal strString As String) As String

    'Die Funktion liefert als Ergebnis einen String, der aus den Ziffern des übergebenen Strings
    'von links bis zur ersten nicht als Ziffer zu interpretierenden Stelle im String besteht.
    Dim intLang     As Integer
    Dim strTemp     As String
    Dim strTest     As String
    Dim I           As Integer
   
    If IsNumeric(strString) Then
        strTemp = strString
    Else
        intLang = Len(strString)
       
        For I = 1 To intLang
            strTest = Left(strString, 1)
            strString = Mid(strString, 2)
            If IsNumeric(strTest) Then
                strTemp = strTemp & strTest
            Else
                Exit For
            End If
        Next I
    End If
   
    TestString = strTemp
End Function

Sub Hauptprogramm()

    Dim strString   As String
   
    strString = TestString(strString)
End Sub



Viel Erfolg
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Cylie
Gast


Verfasst am:
30. Apr 2014, 14:19
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hey Little Hobbit,

das Entfernen ist super und reicht für meinen Zweck aus.
Was mich dennoch interessiert, können auch Buchstaben mittendrin einfach gelöscht werden, sodass die Zahlen am Anfang und Ende eines Strings stehen bleiben? Benötige es nicht aber würde es gerne wissen.

Durch das Entfernen kann ich mehr Zahlen zuordnen jedoch sind auch ein paar Fehler drin. Hier mein Aktueller Code. Kannst du mal draufschauen ob ich irgendwas nicht bedacht habe?

Code:
Sub inSTR()

    Dim i, j As Long
    Dim Artikelnummer As String
    Dim suchStr1, suchStr2, suchStr3 As String
   
   
    For i = 2 To 1686

        suchStr1 = Tabelle1.Cells(i, 4).Value
        suchStr2 = Tabelle1.Cells(i, 5).Value
        suchStr3 = Tabelle1.Cells(i, 6).Value
       
        For j = 2 To 2750
            Artikelnummer = Tabelle1.Cells(j, 16).Value
            If InStr(1, Artikelnummer, suchStr1) Then
                If InStr(1, Artikelnummer, suchStr2) Then
                    If InStr(1, Artikelnummer, suchStr3) Then
                        Tabelle1.Cells(i, 8).Value = Tabelle1.Cells(j, 16).Value
                    End If
                End If
            End If
        Next j
    Next i
    MsgBox "fertig"
End Sub


Beste Grüße

Cylie
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
30. Apr 2014, 15:45
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hallo,

die Funktion läßt sich auch so umbauen, daß nur alles, was nicht Ziffer ist, aus dem String entfernt wird. Dazu muß nur der Else-Zweig etwas umgebaut werden.

Code:

            If IsNumeric(strTest) Then
                strTemp = strTemp & strTest
            Else
                'tue nichts
            End If


Der String wird dann komplett durchlaufen und alle Ziffern in das Ergebnis geschrieben.

Weitere Nachricht folgt später nach Durchsicht des Codes.

Gruß
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
30. Apr 2014, 16:53
Rufname:

AW: VBA: mehrere Strings in String suchen - AW: VBA: mehrere Strings in String suchen

Nach oben
       Version: Office 2010

Hallo,

hier der Code nach Durchsicht:

Code:



Sub inSTR()

    Dim i, j As Long
    Dim Artikelnummer As String
    Dim suchStr1, suchStr2, suchStr3 As String
    Dim objWS   As Worksheet
   
    Set objWS = ActiveSheet 'oder = Worksheets("Tabelle1")
   
    For i = 2 To 1686

        suchStr1 = objWS.Cells(i, 4).Value
        suchStr2 = objWS.Cells(i, 5).Value
        suchStr3 = objWS.Cells(i, 6).Value
       
        For j = 2 To 2750
            Artikelnummer = objWS.Cells(j, 16).Value
            If InStr(Artikelnummer, suchStr1, 1) Then
                If InStr(Artikelnummer, suchStr2, 1) Then
                    If InStr(Artikelnummer, suchStr3, 1) Then
                        objWS.Cells(i, 8).Value = objWS.Cells(j, 16).Value
                    End If
                End If
            End If
        Next j
    Next i
    MsgBox "fertig"
    Set objWS = Nothing
   
End Sub



Bei 'Instr' sollte 'Vergleich' festgelegt werden, sonst kann es Überrachungen geben, wenn die Suche in Excel für andere Zwecke einmal anders eingestellt wird.

Bei dieser Suche ist Artikelnummer
112-12-675 gleich:
112-675-12, 12-112-675, 12-675-112, 675-12-112 oder 675-112-12
siehe meine Nachricht vom 29. Apr 2014, 14:51 .
Wenn das nicht gewollt ist, muß die Artikelnummer in ihre Einzelteile zerlegt werden und die Prüfung dann beginnend mit Teilstring 1 der Artikelnummer durchgeführt werde. Dann wird auch die Position des Suchstrings in der Artikelnummer berücksichtigt.

Gruß
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: String zerlegen 2 tom_r 6330 15. Mai 2006, 16:17
tom_r String zerlegen
Keine neuen Beiträge Excel Formeln: Letzten Eintrag in Datumstabellen suchen und Anzahl der Tage 2 abaton 977 23. Feb 2006, 09:24
abaton Letzten Eintrag in Datumstabellen suchen und Anzahl der Tage
Keine neuen Beiträge Excel Formeln: Excel: Suchen in mehreren Arbeitsmappen -> Problem 0 Sebastian Konrad 1379 07. Feb 2006, 12:47
Sebastian Konrad Excel: Suchen in mehreren Arbeitsmappen -> Problem
Keine neuen Beiträge Excel Formeln: In mehreren Spalten suchen .... 2 firefly2005 1177 11. Jan 2006, 11:48
firefly2005 In mehreren Spalten suchen ....
Keine neuen Beiträge Excel Formeln: Namen suchen 1 Wilfried 606 29. Aug 2005, 12:42
fl618 Namen suchen
Keine neuen Beiträge Excel Formeln: Selbständiges Suchen einer Zelle und kopieren i andere Datei 2 Gerson 2322 19. Mai 2005, 04:48
Gerson Selbständiges Suchen einer Zelle und kopieren i andere Datei
Keine neuen Beiträge Excel Formeln: Wieso funktioniert "suchen und ersetzten" nur bedi 1 landau666 490 08. Apr 2005, 01:05
landau666 Wieso funktioniert "suchen und ersetzten" nur bedi
Keine neuen Beiträge Excel Formeln: Nach textteilen suchen 2 M4rkus 1072 07. Apr 2005, 15:19
Gast Nach textteilen suchen
Keine neuen Beiträge Excel Formeln: Spaltenweise suchen und ersetzen 2 MaxKunst 3840 15. März 2005, 21:17
MaxKunsttt Spaltenweise suchen und ersetzen
Keine neuen Beiträge Excel Formeln: Werte suchen und dazugehörige ausgeben 2 Gast 1679 01. März 2005, 00:59
Gast Werte suchen und dazugehörige ausgeben
Keine neuen Beiträge Excel Formeln: SVERWEIS - NACH 2 KRITERIEN GLEICHZEITIG SUCHEN 6 janine071108 3121 21. Feb 2005, 17:55
Arnim SVERWEIS - NACH 2 KRITERIEN GLEICHZEITIG SUCHEN
Keine neuen Beiträge Excel Formeln: Wert in einer Matrix suchen und den Nachbarwert zurückgeben 1 michl 3098 08. Feb 2005, 12:06
steve1da Wert in einer Matrix suchen und den Nachbarwert zurückgeben
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project