Microsoft Excel

Herbers Excel/VBA-Archiv

Begriffe in Zeile suchen


Betrifft: Begriffe in Zeile suchen von: Peter
Geschrieben am: 26.09.2019 11:56:55

Hallo liebes Forum,

ich habe ein kleines Problem mit meinem VBA-Code und zwar haben sich die Bedingungen etwas verändert, woraufhin auch der VBA-Code etwas angepasst werden müsste. Derzeit werden die Zeilen durchsucht und alle gefundenen Begriffe mit einem "|" getrennt ausgegeben.

In den Veränderten Anforderungen sollen die Zeilen geclustert werden, was bedeutet, dass ich z.B. 5 Spalten mit unterschiedlichen Suchbegriffen habe (sollte variabel sein) und wenn ein Suchbegriff innerhalb dieses Clusters gefunden wird soll der Oberbegriff (steht immer in Zeile 1) ausgegeben werden. Die Ausgabe der Begriffe sollte immer in einer Spalte erfolgen.

Ich wäre euch sehr dankbar, wenn mir jemand beim umschreiben behilflich sein könnte.

Viele Grüße
Peter

Const Anz_Sp As Integer = 4 'Anzahl der Spalten mit Beschreibungen
Const Such_Sp As Integer = 8 'Spalte der Suchbegriffe

Sub Textteile_Suchen()
On Error GoTo NN

lr = Cells(Rows.Count, 1).End(xlUp).Row

Nm = Application.Transpose(Range(Cells(2, Such_Sp), Cells(2, Such_Sp).End(xlDown)))

'vorbereiten
    With CreateObject("vbscript.regexp")
    .Global = False
    .IgnoreCase = False
    .MultiLine = True
    
For r = 2 To lr
    Ar = " " & Join(Application.Transpose(Application.Transpose(Range(Cells(r, 1), Cells(r,  _
Anz_Sp)))), " ") & " "
    Tx = ""
    For i = 1 To UBound(Nm)
        .Pattern = "|b" & Nm(i) & "|b" & "|^" & Nm(i) & "|b"
            
            If InStr(1, Ar, Nm(i), vbTextCompare) > 0 Then
                If .Test(Ar) Then Tx = Tx & Nm(i) & "|"
            End If
NN:
        Err.Clear
        
    Next i

    Cells(r, Anz_Sp + 1) = Tx
Next r
End With
End Sub

  

Betrifft: AW: hat zumindest 1 Monat funktioniert von: Fennek
Geschrieben am: 26.09.2019 13:18:22

Hallo Peter,

nachdem ich meinen Code erkannt habe, konnte ich auch die Datei finden.

2. Probleme:

- was bedeutet Cluster
- auch wenn ich die Aufgabe damals als ganz interessant empfand, bei solchen Nachfragen solltest Du einen Anreiz liefern

mfg


  

Betrifft: AW: hat zumindest 1 Monat funktioniert von: Peter
Geschrieben am: 26.09.2019 15:47:48

Hallo Fennek,

nach genauer Betrachtung würde es auch ausreichen, dass wenn ich den Code 2 mal hintereinander ausführen lasse, die zuvor ermittelten Werte nicht überschrieben werden.

Beispiel:

Erste Ausführung des Codes

Const Anz_Sp As Integer = 4
Const Such_Sp As Integer = 8
Cells(r, Anz_Sp + 1) = Tx

Zweite Ausführung des Codes

Const Anz_Sp As Integer = 4
Const Such_Sp As Integer = 9
Cells(r, Anz_Sp + 1) = Tx

Die Ergebnisse werden in der gleichen Spalte eingetragen, wobei im jetzigen Fall die Werte aus der ersten Ausführung bei der zweiten Ausführung durch eine leere Zelle ersetzt werden. Wenn hier die Werte aus der ersten Ausführung stehen bleiben würden und die aus der zweiten Ausführung nur mit dazu kommen würden, wäre es für mich schon ausreichend.

Viele Grüße
Peter


Beiträge aus dem Excel-Forum zum Thema "Begriffe in Zeile suchen"