2017-10-24 1 views
-5

Ich arbeite an einer Datei mit zwei Spalten. Die erste Spalte enthält einfache drei Wörter. Der zweite enthält Schlüsselwörter für einzelne Wörter.Excel: Gibt mehrere Übereinstimmungen in einer einzelnen Zelle zurück, während eine Teilübereinstimmung durchgeführt wird

Ich würde gerne in der Lage sein, die erste Spalte zu durchsuchen, alle Sätze zu finden, die ein bestimmtes Schlüsselwort haben, und sie als Begrenzungswerte neben dem Schlüsselwort aufzulisten.

First Column 
Very blue sky. 
Red sky tonight. 
Blue sky forever. 
My red car. 
Red red red. 

Zweite Säule ist wie folgt: |

ein Rohr („“) Unter der Annahme, als Trennzeichen, ich so etwas wie diese bekommen

Second Column 
Blue 
Red 

Gewünschte Lösung (hat 2 Spalten , Blau und Rot sind in der ersten Spalte)

Second Column   Results Column 
Blue     Very blue sky. | Blue sky forever. 
Red     Red sky tonight. | My red car. | Red red red. 

Vielen Dank!

+0

Erklärung ist klar, und eine Lösung gegeben werden, aber uns sagen, was haben Sie bisher versucht. Diese Seite erwartet Bemühungen vom Urheber. –

+0

Ich habe versucht, dies mit SVERWEIS zu lösen, aber ich bin fest, wie die Funktion nicht in der Lage ist, mehrere Rückgaben zu behandeln – HoneHeke

Antwort

0

Hier ist eine Möglichkeit, es zu tun.

  1. Öffnen Sie Visual Basic Editor (VBE), indem Sie ALT + F11 drücken.
  2. Einfügen eines neuen Moduls mit Einfügen >> Modul
  3. Einfügen unter Code im Codebereich.

    Public Function ConcatPartLookUp(rngInput As Range, rngSource As Range, Optional strDelimiter As String, Optional blCaseSensitive) 
    Dim rng As Range 
    
    If strDelimiter = "" Then strDelimiter = "|" 
    If IsMissing(blCaseSensitive) Then 
        blCaseSensitive = False 
    Else 
        blCaseSensitive = True 
    End If 
    
    For Each rng In rngSource 
        If blCaseSensitive Then 
         If InStr(1, rng.Value, rngInput.Value, vbBinaryCompare) > 0 Then ConcatPartLookUp = ConcatPartLookUp & strDelimiter & rng.Value 
        Else 
         If InStr(1, rng.Value, rngInput.Value, vbTextCompare) > 0 Then ConcatPartLookUp = ConcatPartLookUp & strDelimiter & rng.Value 
        End If 
    Next 
    
    If Len(ConcatPartLookUp) > 0 Then ConcatPartLookUp = Mid(ConcatPartLookUp, 2, Len(ConcatPartLookUp)) 
    
    End Function 
    

Dann können Sie diese Funktion in Blatt wie jede andere normale Funktion z.B.

=ConcatPartLookUp(B2,A2:A6)

Bitte beachten Sie, ich zwei weitere optionale Argumente zur Verfügung gestellt haben, die auf lange Sicht als nützlich erweisen kann. Wenn Sie wollen, dass es empfindlich machen Fall und ein anderes Trennzeichen sagen passieren „#“ dann müssen Sie verwenden:

=ConcatPartLookUp(B2,A2:A6,"#",TRUE)

+0

Danke @ "Shrivallabha Redij" - das hat perfekt funktioniert und das Problem gelöst! – HoneHeke

Verwandte Themen