2017-06-13 1 views
-1

Hintergrund:Macro: Suche nach einem Text Wert in einer Spalte 1 und kopieren Werte zu Spalte 2

Spalte A in „Sheet1“ besteht aus mehr als 6.000 Zeilen von durch Komma in jeder Zeile getrennt Worte. Ich habe auch eine Suchworttabelle ("Sheet2").

Frage:

das Suchwort Table („Tabelle2“) besteht aus 24 Worten, die Ich mag würde von „Sheet1“ in Spalte A zu identifizieren und zu kopieren zu Spalte B derselben Tabelle über.

Das Problem, auf das ich gestoßen bin, ist, dass ich mit einer Reihe von Wörtern (24) zu tun habe, die ich jede Zeile gegen Spalte A überprüfen möchte, und ich bin mir nicht sicher, wie ich das einrichten soll .

Wenn der Text in einer Zelle in einem String überhaupt erscheint in Spalte A, sollte sie durch Kommas in Spalte B, getrennt in der gleichen Zeile ziehen. Nur der Text in der Suchwort-Tabelle sollte in Spalte B angezeigt

Bitte um Hilfe! diese

+0

In VBA Teilen Sie einfach die Zeilen in Blatt1 durch Kommas und überprüfen Sie sie dann mit den Wörtern in Ihrer Suchworttabelle. Oder reguläre Ausdrücke verwenden –

+0

Erstellen Sie ein Array aus 24 Worten, Schleife durch das Array und mit 'InStr' zu überprüfen, um zu sehen, ob es in der Spalte ist. Wenn dies der Fall ist, ändern Sie den Zellenwert in Spalte B in den Wert von Spalte B + das Komma und den Wert aus dem Array. – dwirony

+0

Dank @dwirony und @ ron-Rosenfeld! Können Sie mir bitte das VBA-Skript zeigen, das Sie dafür verwenden würden? – Walle0786

Antwort

0

Versuchen:

Der einzige Nachteil dabei ist, dass Sie die Wörter eingeben müssen Sie suchen in das Array (siehe Word1, Wort2 etc.)

Sub movingvalues() 
Dim sht As Worksheet 
Dim i As Long 
Dim lastrow As Integer 

Set sht = ActiveWorkbook.Worksheets("Sheet1") 
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

Dim mywords As Variant, word As Variant 
mywords = Array("Word1", "Word2", "Word3", "Word4", "Word5") 'etc all the way to Word24 

ActiveWorkbook.Worksheets("Sheet1").Range("B:B").ClearContents 

For i = 1 To lastrow 
    For Each word In mywords 
     If InStr(ActiveWorkbook.Worksheets("Sheet1").Range("A" & i).Value, word) Then 
      If ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value <> "" Then 
       ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value = ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value & " " & word 
      Else 
       ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value = word 
      End If 
     End If 
    Next word 
Next i 
End Sub 
+0

Hallo @dwirony. Tolle! Es funktionierte! Ich habe 6 von 24 Wörtern getestet und gebe jetzt den Rest in das Array ein. Schnelle Frage - Gibt es eine Möglichkeit, einen "Knopf" in Sheet1 einzufügen, so dass ich das Array in Zukunft einfach aktualisieren kann und in "Sheet1" auf "Suche" klicke? – Walle0786

+0

@ Walle0786 Gut zu hören. Und ja, Sie können eine Schaltfläche hinzufügen. In Excel, wenn Sie auf die Registerkarte Entwickler gehen, einfügen, und unter ActiveXControl wählen Sie die kleine rechteckige Box (und dann die Schaltfläche irgendwo auf dem Bildschirm, wo Sie es wollen). Sie können dann mit der rechten Maustaste auf diese Schaltfläche klicken, zum Zuweisen eines Makros gehen und dann das soeben erstellte Makro zuweisen. – dwirony

Verwandte Themen