phuoclocvl
Thành viên thường trực
- Tham gia
- 28/3/12
- Bài viết
- 220
- Được thích
- 32
Chào Các Anh Chị Diễn Đàn,
Em cũng không biết dặt tiêu đề sao cho phù hợp nữa, em diễn giải sơ qua nhớ các anh chị giúp giùm,
Vốn là em muốn dùng dictionary thay cho VLookup. nhưng lấy 1 lúc nhiều cột. nhưng em không biết làm cách nào để nó đưa vào từng ô mà chỉ gộp 1 ô như hình.
Các anh chị xem giúp em vấn đề này với nha.
Cảm ơn các anh chị nhiều,
và đây là code của em. có trong file đính kèm
Em cũng không biết dặt tiêu đề sao cho phù hợp nữa, em diễn giải sơ qua nhớ các anh chị giúp giùm,
Vốn là em muốn dùng dictionary thay cho VLookup. nhưng lấy 1 lúc nhiều cột. nhưng em không biết làm cách nào để nó đưa vào từng ô mà chỉ gộp 1 ô như hình.
Các anh chị xem giúp em vấn đề này với nha.
Cảm ơn các anh chị nhiều,
và đây là code của em. có trong file đính kèm
PHP:
Sub TestDic()
Dim i As Integer, eRow As Integer, Tmp As String
Dim shData As Worksheet: Set shData = ThisWorkbook.Sheets("Data"): Dim shKq As Worksheet: Set shKq = ThisWorkbook.Sheets("KQ")
Dim sArr(), rArr() As String, k As Integer, Col As Integer
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
'Dic.CompareMode = vbTextCompare
With shData
Col = .Range("A1").End(xlToRight).Column
If Col > 1000 Then Exit Sub
eRow = .Range("A1000").End(xlUp).Row
sArr = .Range("A1:d" & eRow).Value
For i = 1 To UBound(sArr, 1)
Tmp = sArr(i, 1)
Dic(Tmp) = sArr(i, 2) & Chr(44) & sArr(i, 3) & Chr(44) & sArr(i, 4)
Next i
End With
Tmp = ""
Erase sArr
With shKq
eRow = .Range("A1000").End(xlUp).Row
If eRow < 3 Then Exit Sub
sArr = .Range("A3:A" & eRow).Value
ReDim rArr(1 To UBound(sArr, 1), 1 To 1)
For i = 1 To UBound(sArr, 1)
Tmp = sArr(i, 1)
k = k + 1
rArr(k, 1) = Dic(Tmp)
Next i
.Range("B3:B" & eRow).ClearContents
.Range("B3").Resize(k, 1) = rArr
End With
Set Dic = Nothing
Erase rArr
Erase sArr
End Sub