Chào anh chị, cho em hỏi: Em có sheets KQ và TH (với TH là tổng hợp tất cả dữ liệu). Làm thế nào em có thể lấy kết quả tại sheet KQ theo ý muốn với cột A là mã duy nhất và dòng 2 từ cột B là cột muốn lấy (em muốn khi em thay đổi con số cột hoặc mã duy nhất thì kết quả thay đổi theo sau khi chạy code). Em cảm ơn.
Em có thử viết code sau mà loay hoay mãi không biết sai ở đâu.
PHP:
Option Explicit
Private Sub TnDic()
Dim Dic As Object, Col As Object, Ws As Worksheet, Tem As String, Rws As Long
Dim R As Long, i As Long, j As Long, k As Long, C As Long, h As Long
Dim sArr As Variant, dArr(1 To 500, 1 To 50)
Set Dic = CreateObject("Scripting.Dictionary")
Set Col = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
With Sheets("KQ")
'Cot
sArr = .Range("A2").Resize(100, 10).Value
For j = 2 To 10
If sArr(1, j) <> Empty Then
Col.Item(Day(sArr(1, j))) = j - 1
End If
Next j
'Dong
For j = 2 To 100
If sArr(j, 1) <> Empty Then
Dic.Add sArr(j, 1), j - 1
End If
Next j
End With
With Sheets("TH")
sArr = .Range("A6", .Range("A65000").End(xlUp)).Resize(, 50).Value2
For j = 2 To UBound(sArr, 2)
C = Col.Item(sArr(1, j))
For i = 2 To UBound(sArr, 1)
Tem = sArr(i, 1)
If Len(sArr(i, 1)) > 0 Then
If Dic.Exists(Tem) Then
Rws = Dic.Item(Tem)
dArr(Rws, C) = sArr(i, j)
End If
End If
Next i
Next j
End With
Sheets("KQ").Range("B3").Resize(10, 10) = dArr
Set Dic = Nothing
Set Col = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Em có thử viết code sau mà loay hoay mãi không biết sai ở đâu.
File đính kèm
Lần chỉnh sửa cuối: