다른 시트의 정보를 사용하여 두 시트 모두 식별 할 수있는 열이있는 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
지금 난 그냥 시도하고 그렇게 그 일을 얻을 수 그래서 기본적으로 I는 다음과 같이 두 장을 남성용으로 식별 된 모든 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
그러나 여기 그들은 단지 '다른 사람'에 맞게 것처럼이하는 모든 모든 것을 치료입니다 그래서 기본적으로 지금까지의 내가, 그것은 아무것도 표시되지 않는 것 볼 수 B 열에 M 또는 F로 표시됩니다. 도움이나 제안을 주시면 감사하겠습니다.
성별 값 주변에 공백이 있는지 확인하십시오 (예 : "M"). 있다면,'TRIM $()'을 테스트에 추가 할 수 있습니다. –
나는 귀하의 논리가 좋아 보이기 때문에 귀하의 서식에 동의합니다. 다음과 같이 와일드 카드를 사용할 수 있습니다 :'Sh1.Range ("B1") .Offset (t) .Value "* M *"처럼' –