我試圖將excel文檔中的工作表上的一些信息分類到不同的組,使用來自另一工作表的信息和兩個工作表都有一列來標識它們。 具體來說,男性和女性都在玩遊戲,我想將第二張紙上的遊戲結果分成三列;總體而言,男性和女性,但玩家信息保存在第一張紙上,結果頁中唯一的識別特徵是其唯一的ID號,這也是第一張紙。 所以基本上我有兩片是這樣的:VBA Excel:如果語句不起作用
表1:
A | B | C | D
Name | Gender| | ID
Alex | M | | 171
Alexis | F | | 172
Kelly | F | | 177
Chris | M | | 179
第2頁:
A | B | C | D
ID | | | Score
171 | | | 58.2
172 | | | 67.1
177 | | | 73.4
179 | | | 68.95
現在我只是想獲得它使工作所有標識爲男性的ID和分數都複製到另一張表中,爲此,我有兩種不同的解決方案,但都無效。
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim lc1, lc2, x, y, i, vLook, z
Set sh1 = Sheets("players")
Set sh2 = Sheets("Results")
Set sh3 = Sheets("temp")
rcount1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row
rcount2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
x = 2
y = 2
z = 2
Dim t As Integer
Dim k As Integer
k = 1
t = 1
For t = 1 To rcount2
If sh2.Range("A1").Offset(t).Value = sh1.Range("D1").Offset(t).Value Then
If sh1.Range("B1").Offset(t).Value = "M" Then
sh3.Range("A1").Offset(k).Value = sh2.Range("A1").Offset(t).Value
sh3.Range("B1").Offset(k).Value = sh2.Range("D1").Offset(t).Value
k = k + 1
End If
End If
Next t
如果我刪除'if'語句,那麼範圍被複制過來,但'if'語句它什麼都不做。
我其他的解決辦法是這樣的:
For i = 2 To rcount2
vLook = Application.WorksheetFunction.VLookup(sh1.Cells(i, 4), Range(sh2.Cells(1, 1), sh2.Cells(rcount2, 4)), 4, "false")
If sh1.Cells(i, 2) = "M" Then
sh3.Cells(x, 1) = sh1.Cells(i, 4)
sh3.Cells(x, 2) = vLook
x = x + 1
ElseIf sh1.Cells(i, 2) = "F" Then
sh3.Cells(y, 3) = sh1.Cells(i, 4)
sh3.Cells(y, 4) = vLook
y = y + 1
Else
sh3.Cells(z, 5) = sh1.Cells(i, 4)
sh3.Cells(z, 6) = vLook
z = z + 1
End If
Next i
但在這裏它是所有治療的一切,如果他們只適合「其他」 所以基本上就我所看到的,它不是在看什麼表1的B欄作爲M或F.任何幫助或建議,將不勝感激。
檢查性別值是否有空格,例如「M」。如果有的話,你可以在測試中添加'TRIM $()'。 –
我同意,你的邏輯看起來不錯,所以它可能是你的格式。你可以嘗試使用這樣的通配符:'如果sh1.Range(「B1」)。Offset(t).Value Like「* M *」Then' –