2017-07-06 11 views
0

我想確定如果某個值存在於同一列中,如何將單元格的值存儲在變量中。請參見下面的解釋:Excel VBA:如果某個值存在於同一列中,則將一個單元格的值存儲在變量中

示例表 enter image description here

因此,例如,我有一個數據庫,用於存儲個體是否享有一定的水果或沒有。我想要發生的是,對於每個人,在myRange中逐行進行(其中myRange =「B」i &「:E」& i)如果單元格= Chr(13)& Chr(7)在可變頭的值(即「蘋果」,「葡萄」,香蕉」,‘橙’)

這就是我現在所擁有的一個片段:

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) 

回答

2

這裏'使用循環迴路,給一個MsgBox結果爲s一個替代方案:

「喬喜歡橙色, 詹姆斯喜歡蘋果,香蕉,葡萄, 約翰喜歡蘋果,香蕉,橘子, 傑克喜歡蘋果,葡萄,」

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 
1

檢查了這一點夥計,我認爲這將幫助你找出你的問題

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 
相關問題