Sub S1()
' sub copy một bảng dữ liệu (hàng ngang) và tách ra hai bảng hàng dọc tùy theo x/o
' lưu ý: vì đầu vào hàng ngang và đầu ra hàng dọc nên cột copy thành dòng và ngược lại
' lưu ý 2: code tôi viết theo kiểu lười biếng, không khai báo biến, và dùng [ ] để tham chiếu range. Kiểu tham chiếu này viết nhanh nhưng tínCode sử dụng h chậm.
a = Sheet1.[a1].CurrentRegion.Value ' chuyển dữ liệu cần thiết vào mảng
ReDim b1(1 To UBound(a, 2), 1 To UBound(a, 1)) ' định dạng mảng đầu ra
ReDim b2(1 To UBound(a, 2), 1 To UBound(a, 1))
For i = 1 To UBound(a, 2) ' duyệt mang đàu vào theo hàng ngang
' r1 là số dòng mảng b1, r2 là số dòng mảng b2
Select Case a(3, i)
Case "x" ' chép vào bảng x theo hàng dọc
r1 = r1 + 1
b1(r1, 1) = a(1, i)
b1(r1, 2) = a(2, i)
Case "o" ' chép vào bảng o theo hàng dọc
r2 = r2 + 1
b2(r2, 1) = a(1, i)
b2(r2, 2) = a(2, i)
End Select
Next i
If r1 > 0 Then
Sheet2.[a1].Resize(r1, 2) = b1 ' chép lại sheet2
Else
MsgBox "Khong co dong x nao ca"
End If
If r2 > 0 Then
Sheet2.[e1].Resize(r2, 2) = b2 ' chép lại sheets
Else
MsgBox "Khong co dong 0 nao ca"
End If
End Sub