String-Suchfunktion

H

Hatschi

Moin

Ich suche eine Funktion mit welcher ich aus einer Spalte, mit hilfe einer Schleife die Suchbegriffe für meinen String rauslese! Damit ich die nicht manuell eingeben muss! der manuelle string sieht wie folgt aus
Code:

strAlleSuchbegriffe = "Idx_01,Idx_02,Idx_03,Idx_04,Idx_05,Idx_06,Idx_07,Idx_08,Idx_09,Idx_10,Idx_11,Idx_12,Idx_13,Idx_14,Idx_15"


Anstatt diese Suchbegriffe Händisch einzutragen suche ich eine Loop-Funktion welche mir in Tabelle2 die spalte a absucht bis zur letzten benutzten zelle und die werte dann unter StrAlleSuchbegriffe einträgt!

Hab leider nur keine Ahnung wie das geht

kann mir jemand helfen

nörchen
 
Tabelle2... Arbeitest du mit MS Access?

Visual Basic:
sql = "SELECT * FROM Tabelle2 WHERE MeineSpalte IN (" & strAlleSuchbegriffe & ")"
 
Nö mit Excel 2003

n Tabelle1 habe folgendes:

Text_01
Idx_05
Idx_01
Text_04
Idx_06
Text_06
Text_07
Idx_01
Idx_06
Idx_06
Text_11
Idx_05
Idx_16
Idx_06
Idx_05
Text_16
Idx_07
Idx_03
Text_19
Idx_04
Idx_06
Text_22
Idx_05
Idx_15
Idx_06
Idx_09
Text_27
Text_28
Idx_01
Idx_01

Auf Tabelle2 sieht es so aus:

Idx_01 Text_Index_01
Idx_02 Text_Index_02
Idx_03 Text_Index_03
Idx_04 Text_Index_04
Idx_05 Text_Index_05
Idx_06 Text_Index_06
Idx_07 Text_Index_07
Idx_08 Text_Index_08
Idx_09 Text_Index_09
Idx_10 Text_Index_10
Idx_11 Text_Index_11
Idx_12 Text_Index_12
Idx_13 Text_Index_13
Idx_14 Text_Index_14
Idx_15 Text_Index_15
Idx_16 Text_Index_16
Idx_17 Text_Index_17
Idx_18 Text_Index_18

Idx_01 bzw. Text_Index_01 in je einer seperaten spalte!

jetzt will ich per Knopfdruck in Tabelle2 spalte a stehenden indizes erfassen und die liste in spalte a auf tabelle1 danach absuchen
anschliessend sollte die zellen ohne indizes direkt in die spalte b der Tabelle 1 übernommen werden und die zellen mit indizes den Text aus spalte b Tabelle 2 kopieren und in Tabelle1 Spalte B einfügen! es sollte logischerweise dem index zugewissener text sein!

ist das einigermassen verständlich:

Hier mein makro soweit ich bin

Code:

Private Sub CommandButton1_Click()
Dim rngFind As Range
Dim strSuchbegriff() As String
Dim strErsteZelle As String
Dim strAlleSuchbegriffe As String
Dim i As Long

strAlleSuchbegriffe = "Idx_01,Idx_02,Idx_03,Idx_04,Idx_05,Idx_06,Idx_07,Idx_08,Idx_09,Idx_10,Idx_11,Idx_12,Idx_13,Idx_14,Idx_15"
strSuchbegriff() = Split(strAlleSuchbegriffe, ",")
For i = 0 To UBound(strSuchbegriff)
With ActiveSheet.Range("A:A")
Set rngFind = .Find(strSuchbegriff(i), , , xlPart)
If Not rngFind Is Nothing Then
strErsteZelle = rngFind.Address
Do
rngFind.Value = Sheets("Tabelle1").Range("B" & i + 1 & ":B" & i + 1).Value
Set rngFind = .FindNext
Loop Until rngFind Is Nothing
Else
MsgBox "Der Suchbegriff " & vbLf & strSuchbegriff(i) & vbLf & "wurde nicht gefunden"
End If
End With

Set rngFind = Nothing
Next i


was muss ich ändern bzw. ergänzen?
 
Hallo!

Mein Vorschlag:

Code:
    Dim rngFind As Range
    Dim strSuchbegriff() As Variant
    Dim strErsteAdresse As String
    Dim strAlleSuchbegriffe As String
    Dim i As Long
    Dim rStart, rEnde As Long
    
    rStart = Sheets("Tabelle2").UsedRange.Cells(1, 1).Row
    rEnde = Sheets("Tabelle2").UsedRange.Rows.Count + (rStart - 1)
    
    strSuchbegriff() = Sheets("Tabelle2").UsedRange.Range("A" & rStart & ":B" & rEnde).Value(xlRangeValueDefault)
    
    Sheets("Tabelle1").UsedRange.Range("B:B").Value = Sheets("Tabelle1").UsedRange.Range("A:A").Value

    For i = 1 To UBound(strSuchbegriff, 1)
        With Sheets("Tabelle1").UsedRange.Range("A:A")
            Set rngFind = .Find(strSuchbegriff(i, 1), , , xlPart)
                                    
            If Not rngFind Is Nothing Then
                strErsteAdresse = rngFind.Address
                
                Do
                    adrFind = rngFind.Address
                    Sheets("Tabelle1").Cells(rngFind.Row, rngFind.Column + 1) = strSuchbegriff(i, 2)
                    Set rngFind = .FindNext(rngFind)
                Loop Until (rngFind Is Nothing) Or (rngFind.Address = strErsteAdresse)
            Else
                MsgBox "Der Suchbegriff " & vbLf & strSuchbegriff(i, 1) & vbLf & "wurde nicht gefunden"
            End If
        End With
        
        Set rngFind = Nothing
    Next i
 
Zuletzt bearbeitet:
Zurück