Ich versuche, eine Excel-Funktion in VBA zu definieren, wo ich Apple oder Orange wie in =MyFunc("Apple")
angeben kann und erhalten "Tom" oder "Dick, Harry". Ich bin in der Lage, herauszufinden, in welcher Zeile die Suchabfrage mit Find
ist, aber ich kann nicht herausfinden, wie man einen Teil dieser Zeile nach "X" scannt (oder nicht leer) und den Wert (die Werte) von der obersten Zeile zurückgibt entsprechend dem "X".Wert aus dem einzeiligen Bereich in der angegebenen Spalte
... B ... M N ... CR
___________________________________
3 | | Tom | Dick | Harry
+--------+-------+--------+--------
4 | Apple | X | |
+--------+-------+--------+--------
5 | Orange | | X | X
Was ich bisher habe:
Function MyFunc(what As String, Optional sep As String = ", ") As String
Dim rngSearch As Range, rngFound As Range
Dim strResult As String, allNames As Range
Set rngSearch = Worksheets("Sheet1").Range("B:B")
Set allNames = Worksheets("Sheet1").Range("M3:CR3")
Set rngFound = rngSearch.Find(what, LookIn:=xlValues, LookAt:=xlPart)
If rngFound Is Nothing Then
MsgBox "Not found"
Else
MsgBox rngFound.Row
'search that row from Col M to Col CR for "X", add value in Row 3 to strResult if X is found
End If
MyFunc = strResult
End Function
Schließen Duplikat [Verketten obere Reihe Zellen, wenn die Spalte unter 1 hat] (http://stackoverflow.com/questions/28679758/concatenate-top-row-cells-if-column- lowing-has-1/28680713 # 28680713) Wenn Sie es nicht nachbearbeiten möchten, verwenden Sie wie erwartet '= conditional_concat (M $ 3: CR $ 3, INDEX (M: CR, MATCH (" Apfel ", B: B , 0), 0)) ' – Jeeped