Trợn mắt đoán mò, không trúng thì trật.Chào ace,
Em có muốn gộp dữ liệu từ sheet 1 sang sheet 2 có điều kiện.
Em có VD 1 hàng trên Sheet 2, nhờ các anh chị giúp em cái macro gộp cho nhanh.
Đây cũng là code đoán mò, hỏng trúng thì tèoChào ace,
Em có muốn gộp dữ liệu từ sheet 1 sang sheet 2 có điều kiện.
Em có VD 1 hàng trên Sheet 2, nhờ các anh chị giúp em cái macro gộp cho nhanh.
Sub quanghai()
Dim nguon(), kq(), I, J, k, ID()
With Sheets("sheet1")
nguon = .Range(.[A1], .[A65536].End(3)).Resize(, 14).Value
End With
With Sheets("sheet2")
ID = .Range(.[A1], .[A1].End(2)).Value
End With
ReDim kq(1 To UBound(nguon), 1 To UBound(ID, 2))
For I = 2 To UBound(nguon)
For k = 2 To 14
For J = 2 To UBound(ID, 2)
If InStr(ID(1, J), Left(nguon(1, k), 3)) Then
kq(I - 1, 1) = nguon(I, 1)
If kq(I - 1, J) <> "" Then
kq(I - 1, J) = kq(I - 1, J) & "," & nguon(I, k)
Else
kq(I - 1, J) = nguon(I, k)
End If
Exit For
End If
Next
Next
Next
Sheet2.[A2].Resize(I - 1, UBound(ID, 2)) = kq
End Sub
Xem file. Nhớ phải có cái dòng vàng vàng nhaSao đoạn code của anh quanghai1969 em chạy không ra được, dữ liệu bị trống.
If InStr(ID(1, J), Left(nguon(1, k), 3)) Then
Rối mắt với kiểu ghép ghép nầy quá.nếu em có 1 file dữ liệu khác nhiều column dữ liệu hơn nữa thì sửa code sao anh,
và hàng highlight vàng tiêu đề macro tự gộp lại chứ không làm tay.
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, Tem As String, C As Long, Col As Long
With Sheet1
C = .[A1].End(xlToRight).Column
sArr = .Range(.[A1], .[A1].End(xlDown)).Resize(, C).Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To C)
For I = 1 To UBound(sArr, 1)
dArr(I, 1) = sArr(I, 1)
dArr(I, 2) = sArr(I, 2)
Next I
Tem = Left(sArr(1, 2), 3)'<---------------Thay 3 thanh 4'
Col = 2
For J = 3 To C
If Left(sArr(1, J), 3) <> Tem Then'<------------- 3 thanh 4'
Col = Col + 1
Tem = Left(sArr(1, J), 3)'<-----------------3 thanh 4'
dArr(1, Col) = sArr(1, J)
If dArr(1, Col - 1) <> sArr(1, J - 1) Then dArr(1, Col - 1) = dArr(1, Col - 1) & "-" & sArr(1, J - 1)
For I = 2 To UBound(sArr, 1)
dArr(I, Col) = sArr(I, J)
Next I
Else
For I = 2 To UBound(sArr, 1)
dArr(I, Col) = dArr(I, Col) & ";" & sArr(I, J)
Next I
End If
Next J
Sheet2.[A4].Resize(UBound(sArr, 1), Col).Value2 = dArr
End Sub
Yêu cầu thì nêu rõ từ đầu, mỗi lúc thêm một chút thì bạn tự chỉnh code đi.Em còn gặp 1 vấn đề là khi dữ liệu trống thì chạy macro nó sẽ ra (;1;1 ) do cells thứ 1 không có dữ liệu,
hoặc (1;;2do cells thứ 2 & 4 không có dữ liệu.
Em muốn nó thành (1;1) hoặc (1;2) thôi, dữ liệu cell nào trống nó sẽ tự dồn, tiêu đề vẫn giữ như macro chạy ra.
For I = 2 To UBound(sArr, 1)
dArr(I, Col) = dArr(I, Col) & ";" & sArr(I, J) '<-------Nghien cuu chinh sua lai dong nay'
Next I