Excel VBA:如果某个值存在于同一列中,则将一个单元格的值存储在variables中

我试图确定如何将一个单元格的值存储在一个variables中,如果某个值存在于同一列中。 请参阅下面的解释:

示例表 在这里输入图像说明

例如,我有一个数据库存储一个人是否享有某种特定的水果。 我想要发生的是,如果单元格是= Chr(13)&Chr(7),那么对于每个人,在myRange(其中myRange =“B”i&“:E”&i)variables(即“苹果”,“葡萄”,香蕉“,”橙“)中的标题的值。

这是我现在作为一个片段:

For i = 7 To iLastRow Set oCell = myRange.Find(What:=Chr(13) & Chr(7), LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, :=False, SearchFormat:=False) If oCell = Chr(13) & Chr(7) Then value = "DONT KNOW WHAT TO PUT HERE BUT IT WILL REFERENCE TO THE ITEMS 'Apple', 'Grape','Banana', 'Orange' DEPENDING ON WHICH COLUMN THE BLANK IS FOUND IN" sTemp = sTemp & "," & value Else Set oCell = Nothing End If Next i sTemp = Mid(sTemp, 2) 

这里有一个使用循环的替代方法,它给出了一个msgbox结果:

“乔喜欢桔子,詹姆斯喜欢苹果,香蕉,葡萄,约翰喜欢苹果,香蕉,桔子,杰克喜欢苹果,葡萄,”

 Sub what() Dim P As String: Dim X As String: Dim S As String Dim i As Integer: Dim j As Integer: Dim iLastRow As Integer With ThisWorkbook.Worksheets("Sheet3") iLastRow = 10 For i = 7 To iLastRow P = .Cells(i, 1).Value2 For j = 2 To 5 If .Cells(i, j).Value = "Y" Then V = .Cells(6, j).Value S = S & V & ", " End If Next j X = P & " likes " & S & vbNewLine & X S = "" Next i End With MsgBox X End Sub 

看看这家伙,我认为这将帮助你找出你的问题

 Private Sub this() Dim arr As Variant, strPerson As String, strFruit As String arr = ThisWorkbook.Sheets("Sheet1").UsedRange For i = LBound(arr, 1) To UBound(arr, 1) For j = LBound(arr, 2) To UBound(arr, 2) If arr(i, 1) <> arr(1, 1) Then If arr(i, j) = arr(i, 1) Then strPerson = arr(i, j) If arr(i, j) <> arr(i, 1) Then If arr(i, j) = "y" Then strFruit = arr(1, j) strPerson = strPerson & strFruit End If End If End If Next j Debug.Print ; strPerson Next i End Sub