Bạn sắp xếp giao diện để hiện thị không hợp lý.Nên không ai code đâu.Vì khi trả kết quả nó sẽ chèn hết vào dữ liệu gốc.Em up lên
Ý anh là bảng dữ liệu chi tiết. Híc, em để nó cho dễ tham chiếu thôi, khi thực hiện Bảng dữ liệu chi tiết sẽ ở một sheet khácBạn sắp xếp giao diện để hiện thị không hợp lý.Nên không ai code đâu.Vì khi trả kết quả nó sẽ chèn hết vào dữ liệu gốc.
Vậy bạn đăng cái kia lên đi.Mình code vào đấy.Ý anh là bảng dữ liệu chi tiết. Híc, em để nó cho dễ tham chiếu thôi, khi thực hiện Bảng dữ liệu chi tiết sẽ ở một sheet khác
Cảm ơn bản. Mình up bản yêu cầu đầy đủ nhé, trong đó mình có comment cho rõ các mong muốnVậy bạn đăng cái kia lên đi.Mình code vào đấy.
Đây bạn xem.Cảm ơn bản. Mình up bản yêu cầu đầy đủ nhé, trong đó mình có comment cho rõ các mong muốn
Sub ketqua()
Dim arr, arr1
Dim a As Long, b As Long, c As Long, i As Long, j As Long, lr As Long, k As Long
Dim dk As String, dks As String, T, aT, aso()
With Sheets("du lieu")
lr = .Range("C" & Rows.Count).End(xlUp).Row
If lr < 5 Then MsgBox "khong co du lieu": Exit Sub
arr = .Range("C5:R" & lr).Value
ReDim arr1(1 To UBound(arr, 1), 1 To 16)
End With
With Sheet1
T = Array(.Range("E7").Value, .Range("E8").Value, .Range("E9").Value, .Range("E10").Value)
aT = Array(1, 2, 3, 4)
If Len(.Range("e7").Value) = 0 Then MsgBox "chon muc 1": Exit Sub
For i = LBound(T) To UBound(T)
If T(i) <> Empty Then
c = c + 1
If dk = Empty Then
dk = T(i)
Else
dk = dk & "#" & T(i)
End If
ReDim Preserve aso(1 To c)
aso(c) = aT(i)
End If
Next i
For i = 1 To UBound(arr, 1)
dks = Empty
For k = LBound(aso) To UBound(aso)
If dks = Empty Then
dks = arr(i, aso(k))
Else
dks = dks & "#" & arr(i, aso(k))
End If
Next k
If Len(arr(i, 2)) > 0 Then
If UCase(dk) = UCase(dks) Then
a = a + 1
For j = 1 To 16
arr1(a, j) = arr(i, j)
Next j
End If
End If
Next i
b = .Range("C" & Rows.Count).End(xlUp).Row
If b > 12 Then .Range("C13:R" & b).ClearContents
If a Then .Range("C13").Resize(a, 16).Value = arr1
End With
End Sub
Cảm ơn bạn nhéĐây bạn xem.
Mã:Sub ketqua() Dim arr, arr1 Dim a As Long, b As Long, c As Long, i As Long, j As Long, lr As Long, k As Long Dim dk As String, dks As String, T, aT, aso() With Sheets("du lieu") lr = .Range("C" & Rows.Count).End(xlUp).Row If lr < 5 Then MsgBox "khong co du lieu": Exit Sub arr = .Range("C5:R" & lr).Value ReDim arr1(1 To UBound(arr, 1), 1 To 16) End With With Sheet1 T = Array(.Range("E7").Value, .Range("E8").Value, .Range("E9").Value, .Range("E10").Value) aT = Array(1, 2, 3, 4) If Len(.Range("e7").Value) = 0 Then MsgBox "chon muc 1": Exit Sub For i = LBound(T) To UBound(T) If T(i) <> Empty Then c = c + 1 If dk = Empty Then dk = T(i) Else dk = dk & "#" & T(i) End If ReDim Preserve aso(1 To c) aso(c) = aT(i) End If Next i For i = 1 To UBound(arr, 1) dks = Empty For k = LBound(aso) To UBound(aso) If dks = Empty Then dks = arr(i, aso(k)) Else dks = dks & "#" & arr(i, aso(k)) End If Next k If Len(arr(i, 2)) > 0 Then If UCase(dk) = UCase(dks) Then a = a + 1 For j = 1 To 16 arr1(a, j) = arr(i, j) Next j End If End If Next i b = .Range("C" & Rows.Count).End(xlUp).Row If b > 12 Then .Range("C13:R" & b).ClearContents If a Then .Range("C13").Resize(a, 16).Value = arr1 End With End Sub