Nhờ GPE gúp mình lấy số liệu từ sheet"dulieu" sang sheet"thamdinh" với.
Cách lấy số liệu: từ sheet"dulieu" qua sheets"thamdinh"
+ Đối với giá trị họ tên thì thê hiện Họ tên, Năm sinh, CMND (Nguyễn Văn A, Sinh năm 1987, CMND số 191514598)
+ Đối với giá trị tài sản: nếu cột kích thước có giá trị thi nối cột Tài sản và kích thước và "m" (Nhà cấp 4: Nhà móng BT; cột BTCT; tường chịu lực xây gạch; mái ngói, tôn; nền xi măng, không có khu phụ trong nhà , kích thước: 7.5 x 3.5 m).
Nhờ GPE giúp đỡ.
Nhờ GPE gúp mình lấy số liệu từ sheet"dulieu" sang sheet"thamdinh" với.
Cách lấy số liệu: từ sheet"dulieu" qua sheets"thamdinh"
+ Đối với giá trị họ tên thì thê hiện Họ tên, Năm sinh, CMND (Nguyễn Văn A, Sinh năm 1987, CMND số 191514598)
+ Đối với giá trị tài sản: nếu cột kích thước có giá trị thi nối cột Tài sản và kích thước và "m" (Nhà cấp 4: Nhà móng BT; cột BTCT; tường chịu lực xây gạch; mái ngói, tôn; nền xi măng, không có khu phụ trong nhà , kích thước: 7.5 x 3.5 m).
Nhờ GPE giúp đỡ.
Sub Layulieu()
Dim sArr(), tArr(), dArr(), Arr()
Dim Dic As Object, I As Long, J As Long, K As Long, R As Long, KT As String
Set Dic = CreateObject("Scripting.Dictionary")
KT = ", K" & ChrW$(237) & "ch th" & ChrW$(432) & ChrW$(7899) & "c: "
With Sheets("Dulieu")
Arr = .Range("B3:G3").Value
tArr = .Range("B4", .Range("B65535").End(3)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
Dic.Item(tArr(I, 1)) = I
Next I
With Sheets("Dulieu")
sArr = .Range("L4", .Range("L65535").End(3)).Resize(, 9).Value
End With
ReDim dArr(1 To UBound(sArr) * 2, 1 To 9)
For I = 1 To UBound(sArr)
R = Dic.Item(sArr(I, 1))
K = K + 1
dArr(K, 1) = I
dArr(K, 2) = tArr(R, 2)
For J = 3 To 6
If tArr(R, J) <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & Arr(1, J) & ": " & tArr(R, J)
Next J
K = K + 1
If sArr(I, 4) <> Empty Then
dArr(K, 2) = sArr(I, 3) & KT & sArr(I, 4)
Else
dArr(K, 2) = sArr(I, 3)
End If
dArr(K, 3) = sArr(I, 5): dArr(K, 4) = sArr(I, 6): dArr(K, 5) = sArr(I, 7)
dArr(K, 6) = sArr(I, 8): dArr(K, 7) = sArr(I, 9)
Next I
With Sheets("ThamDinh")
.Range("A6:H1000").ClearContents
.Range("A6").Resize(K, 9) = dArr
End With
Set Dic = Nothing
End Sub
Sub Layulieu()
Dim sArr(), tArr(), dArr(), Arr()
Dim Dic As Object, I As Long, J As Long, K As Long, R As Long, KT As String
Set Dic = CreateObject("Scripting.Dictionary")
KT = ", K" & ChrW$(237) & "ch th" & ChrW$(432) & ChrW$(7899) & "c: "
With Sheets("Dulieu")
Arr = .Range("B3:G3").Value
tArr = .Range("B4", .Range("B65535").End(3)).Resize(, 6).Value
End With
For I = 1 To UBound(tArr)
Dic.Item(tArr(I, 1)) = I
Next I
With Sheets("Dulieu")
sArr = .Range("L4", .Range("L65535").End(3)).Resize(, 9).Value
End With
ReDim dArr(1 To UBound(sArr) * 2, 1 To 9)
For I = 1 To UBound(sArr)
R = Dic.Item(sArr(I, 1))
K = K + 1
dArr(K, 1) = I
dArr(K, 2) = tArr(R, 2)
For J = 3 To 6
If tArr(R, J) <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & Arr(1, J) & ": " & tArr(R, J)
Next J
K = K + 1
If sArr(I, 4) <> Empty Then
dArr(K, 2) = sArr(I, 3) & KT & sArr(I, 4)
Else
dArr(K, 2) = sArr(I, 3)
End If
dArr(K, 3) = sArr(I, 5): dArr(K, 4) = sArr(I, 6): dArr(K, 5) = sArr(I, 7)
dArr(K, 6) = sArr(I, 8): dArr(K, 7) = sArr(I, 9)
Next I
With Sheets("ThamDinh")
.Range("A6:H1000").ClearContents
.Range("A6").Resize(K, 9) = dArr
End With
Set Dic = Nothing
End Sub
Một mã đối tượng thì mình chỉ cho xuất hiện tên 1 lần, còn phần tài sản thì thi theo mã đối tượng bên dưới dòng hoten. File kèm theo cảu anh đấy ví dụ ở sheet"thamdinh: sở số stt 3 em sẽ thấy afh.
Một mã đối tượng thì mình chỉ cho xuất hiện tên 1 lần, còn phần tài sản thì thi theo mã đối tượng bên dưới dòng hoten. File kèm theo cảu anh đấy ví dụ ở sheet"thamdinh: sở số stt 3 em sẽ thấy afh.
Sub Layulieu()
Dim sArr(), dArr(), Arr()
Dim Dic As Object, I As Long, J As Long, K As Long, R As Long, KT As String
Dim Rng As Range, v As Variant, Stt As Long, Sodem As Long, Tam As String
Set Dic = CreateObject("Scripting.Dictionary")
KT = ", K" & ChrW$(237) & "ch th" & ChrW$(432) & ChrW$(7899) & "c: "
With Sheets("Dulieu")
Set Rng = .Range("B4", .Range("B65535").End(3)).Resize(, 6)
Arr = .Range("B3:G3").Value
sArr = .Range("L4", .Range("L65535").End(3)).Resize(, 9).Value
End With
For I = 1 To UBound(sArr)
Dic(sArr(I, 1)) = 1
Next I
ReDim dArr(1 To UBound(sArr) * 2, 1 To 9)
For Each v In Dic.keys()
For I = 1 To UBound(sArr)
If sArr(I, 1) = v Then
Sodem = Sodem + 1
If Sodem = 1 Then
K = K + 1: Stt = Stt + 1
dArr(K, 1) = Stt
dArr(K, 2) = Application.VLookup(v, Rng, 2, False)
For J = 3 To 4
Tam = Application.VLookup(v, Rng, J, False)
If Tam <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & Arr(1, J) & ": " & Tam
Next J
End If
K = K + 1
If sArr(I, 4) <> Empty Then
dArr(K, 2) = sArr(I, 3) & KT & sArr(I, 4) & " m"
Else
dArr(K, 2) = sArr(I, 3)
End If
dArr(K, 3) = sArr(I, 5): dArr(K, 4) = sArr(I, 6): dArr(K, 5) = sArr(I, 7)
dArr(K, 6) = sArr(I, 8): dArr(K, 7) = sArr(I, 9)
End If
Next I
Sodem = 0
Next
With Sheets("ThamDinh")
.Range("A6:H1000").ClearContents
.Range("A6").Resize(K, 9) = dArr
End With
Set Dic = Nothing
End Sub
Sub Layulieu()
Dim sArr(), dArr(), Arr()
Dim Dic As Object, I As Long, J As Long, K As Long, R As Long, KT As String
Dim Rng As Range, v As Variant, Stt As Long, Sodem As Long, Tam As String
Set Dic = CreateObject("Scripting.Dictionary")
KT = ", K" & ChrW$(237) & "ch th" & ChrW$(432) & ChrW$(7899) & "c: "
With Sheets("Dulieu")
Set Rng = .Range("B4", .Range("B65535").End(3)).Resize(, 6)
Arr = .Range("B3:G3").Value
sArr = .Range("L4", .Range("L65535").End(3)).Resize(, 9).Value
End With
For I = 1 To UBound(sArr)
Dic(sArr(I, 1)) = 1
Next I
ReDim dArr(1 To UBound(sArr) * 2, 1 To 9)
For Each v In Dic.keys()
For I = 1 To UBound(sArr)
If sArr(I, 1) = v Then
Sodem = Sodem + 1
If Sodem = 1 Then
K = K + 1: Stt = Stt + 1
dArr(K, 1) = Stt
dArr(K, 2) = Application.VLookup(v, Rng, 2, False)
For J = 3 To 4
Tam = Application.VLookup(v, Rng, J, False)
If Tam <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & Arr(1, J) & ": " & Tam
Next J
End If
K = K + 1
If sArr(I, 4) <> Empty Then
dArr(K, 2) = sArr(I, 3) & KT & sArr(I, 4) & " m"
Else
dArr(K, 2) = sArr(I, 3)
End If
dArr(K, 3) = sArr(I, 5): dArr(K, 4) = sArr(I, 6): dArr(K, 5) = sArr(I, 7)
dArr(K, 6) = sArr(I, 8): dArr(K, 7) = sArr(I, 9)
End If
Next I
Sodem = 0
Next
With Sheets("ThamDinh")
.Range("A6:H1000").ClearContents
.Range("A6").Resize(K, 9) = dArr
End With
Set Dic = Nothing
End Sub
Sub Layulieu()
Dim sArr(), dArr(), Arr()
Dim Dic As Object, I As Long, J As Long, K As Long, R As Long, KT As String
Dim Rng As Range, v As Variant, Stt As Long, Sodem As Long, Tam As String
Set Dic = CreateObject("Scripting.Dictionary")
KT = ", K" & ChrW$(237) & "ch th" & ChrW$(432) & ChrW$(7899) & "c: "
With Sheets("Dulieu")
Set Rng = .Range("B4", .Range("B65535").End(3)).Resize(, 6)
Arr = .Range("B3:G3").Value
sArr = .Range("L4", .Range("L65535").End(3)).Resize(, 9).Value
End With
For I = 1 To UBound(sArr)
Dic(sArr(I, 1)) = 1
Next I
ReDim dArr(1 To UBound(sArr) * 2, 1 To 9)
For Each v In Dic.keys()
For I = 1 To UBound(sArr)
If sArr(I, 1) = v Then
Sodem = Sodem + 1
If Sodem = 1 Then
K = K + 1: Stt = Stt + 1
dArr(K, 1) = Stt
dArr(K, 2) = Application.VLookup(v, Rng, 2, False)
For J = 3 To 4
Tam = Application.VLookup(v, Rng, J, False)
If Tam <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & Arr(1, J) & ": " & Tam
Next J
End If
K = K + 1
If sArr(I, 4) <> Empty Then
dArr(K, 2) = sArr(I, 3) & KT & sArr(I, 4) & " m"
Else
dArr(K, 2) = sArr(I, 3)
End If
dArr(K, 3) = sArr(I, 5): dArr(K, 4) = sArr(I, 6): dArr(K, 5) = sArr(I, 7)
dArr(K, 6) = sArr(I, 8): dArr(K, 7) = sArr(I, 9)
End If
Next I
Sodem = 0
Next
With Sheets("ThamDinh")
.Range("A6:H1000").ClearContents
.Range("A6").Resize(K, 9) = dArr
End With
Set Dic = Nothing
End Sub
(1) Dic(sArr(I, 1)) = 1 thì anh lại phải sang đây đọc rồi ( Nó nằm trong mục Thuộc tính Item nha anh) http://www.giaiphapexcel.com/diendan/threads/tổng-quan-về-scripting-dictionary.60643/
(2) ReDim dArr(1 To UBound(sArr) * 2, 1 To 9) là khai báo mảng dArr
Có nghĩa là mảng dArr có kích thưc
- Số dòng từ 1 đến dòng cuối mảng sArr * 2 (Số hàng gấp đôi mảng sArr)
- Số cột từ 1 đến 9 ( Có 9 cột)
Trong đó Ubound(sArr) hay Ubound(sArr,1) là dòng cuối của mảng sArr: Ubound(sArr,2) là cột cuối của mảng sArr
(1) Dic(sArr(I, 1)) = 1 thì anh lại phải sang đây đọc rồi ( Nó nằm trong mục Thuộc tính Item nha anh) http://www.giaiphapexcel.com/diendan/threads/tổng-quan-về-scripting-dictionary.60643/
(2) ReDim dArr(1 To UBound(sArr) * 2, 1 To 9) là khai báo mảng dArr
Có nghĩa là mảng dArr có kích thưc
- Số dòng từ 1 đến dòng cuối mảng sArr * 2 (Số hàng gấp đôi mảng sArr)
- Số cột từ 1 đến 9 ( Có 9 cột)
Trong đó Ubound(sArr) hay Ubound(sArr,1) là dòng cuối của mảng sArr: Ubound(sArr,2) là cột cuối của mảng sArr
Sub Layulieu()
Dim sArr(), dArr(), Arr()
Dim Dic As Object, I As Long, J As Long, K As Long, R As Long, KT As String
Dim Rng As Range, v As Variant, Stt As Long, Sodem As Long, Tam As String
Set Dic = CreateObject("Scripting.Dictionary")
KT = ", K" & ChrW$(237) & "ch th" & ChrW$(432) & ChrW$(7899) & "c: "
With Sheets("Dulieu")
Set Rng = .Range("B4", .Range("B65535").End(3)).Resize(, 6)
Arr = .Range("B3:G3").Value
sArr = .Range("L4", .Range("L65535").End(3)).Resize(, 9).Value
End With
For I = 1 To UBound(sArr)
Dic(sArr(I, 1)) = 1
Next I
ReDim dArr(1 To UBound(sArr) * 2, 1 To 9)
For Each v In Dic.keys()
For I = 1 To UBound(sArr)
If sArr(I, 1) = v Then
Sodem = Sodem + 1
If Sodem = 1 Then
K = K + 1: Stt = Stt + 1
dArr(K, 1) = Stt
dArr(K, 2) = Application.VLookup(v, Rng, 2, False)
For J = 3 To 4
Tam = Application.VLookup(v, Rng, J, False)
If Tam <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & Arr(1, J) & ": " & Tam
Next J
End If
K = K + 1
If sArr(I, 4) <> Empty Then
dArr(K, 2) = sArr(I, 3) & KT & sArr(I, 4) & " m"
Else
dArr(K, 2) = sArr(I, 3)
End If
dArr(K, 3) = sArr(I, 5): dArr(K, 4) = sArr(I, 6): dArr(K, 5) = sArr(I, 7)
dArr(K, 6) = sArr(I, 8): dArr(K, 7) = sArr(I, 9)
End If
Next I
Sodem = 0
Next
With Sheets("ThamDinh")
.Range("A6:H1000").ClearContents
.Range("A6").Resize(K, 9) = dArr
End With
Set Dic = Nothing
End Sub
Với code này, mình có chỉnh sửa lại để lọc dữ liệu nhưng báo lỗi bạn xem giúp mình tý.
Mình thêm các dòng code sau:
If Sheet1.Range("w2").Value = "" Then
(phần code của bạn ở trên)
else
ReDim darr1(1 To UBound(sArr), 1 To 11)
For n = 1 To UBound(sArr)
If sArr(n, 12) = Sheet1.[w2] Then
K = K + 1
darr1(K, 1) = sArr(n, 1)
For J = 2 To 11
darr1(K, J) = sArr(n, J)
Next J
End If
Next n (Mình tạo ra mãng dữ liệu số số cột khong thay đổi)
If Sheet1.[b4] = "" Then Exit Sub
For i = 1 To UBound(darr1)
Dic(darr1(i, 1)) = 1
Next i
ReDim dArr(1 To UBound(darr1) * 2, 1 To 9)
For Each v In Dic.keys()
For i = 1 To UBound(darr1)
If darr1(i, 1) = v Then
Sodem = Sodem + 1
If Sodem = 1 Then
K = K + 1: Stt = Stt + 1
dArr(K, 1) = Stt
dArr(K, 2) = Application.VLookup(v, Rng, 2, False)
For J = 3 To 4
Tam = Application.VLookup(v, Rng, J, False)
If Tam <> Empty Then dArr(K, 2) = dArr(K, 2) & "; " & arr(1, J) & ": " & Tam
Next J
End If
K = K + 1
If darr1(i, 4) <> Empty Then
dArr(K, 2) = darr1(i, 3) & KT & darr1(i, 4) & " m"
Else
dArr(K, 2) = darr1(i, 3)
End If
dArr(K, 3) = darr1(i, 5): dArr(K, 4) = darr1(i, 6): dArr(K, 5) = darr1(i, 7)
dArr(K, 6) = darr1(i, 8): dArr(K, 7) = darr1(i, 9): dArr(K, 8) = darr1(i, 10)
dArr(K, 9) = darr1(i, 11)
End If
Next i
Sodem = 0
Next
With Sheets("ThamDinh")
.Range("A6:N10000").ClearContents
.Range("A6:N10000").ClearFormats
.Range("A6").Resize(K, 9) = dArr
End With
Tìm tới chỗ chuyên để ghi code ấy, cho khúc trên vào đó.
Người ta làm giúp mình còn cho vào đó để khi mình nhận hàng còn biết lấy về.
Vậy mình đi hỏi cũng cố mà làm được như thế. Nếu không làm được như thế thì hết cách!
Tìm tới chỗ chuyên để ghi code ấy, cho khúc trên vào đó.
Người ta làm giúp mình còn cho vào đó để khi mình nhận hàng còn biết lấy về.
Vậy mình đi hỏi cũng cố mà làm được như thế. Nếu không làm được như thế thì hết cách!