levanhoa1977
Thành viên chính thức


- Tham gia
- 10/10/11
- Bài viết
- 62
- Được thích
- 3
Chạy code sau và phản hồi lại nhé:Báo cáo tuần lấy dữ liệu từ 2 sheet chi tiêt và thu chi.
1/ phần lấy dữ liệu từ sheet chi tiết qua từng tuần ( cột mua hàng) mình đã làm rồi.
2/ Lấy dữ liệu từ sheet thu chi
Dữ liệu dựa vào mã khách hàng có sẳn cột A và dòng và tuần C5:L5
Cảm ơn
Sub GPE()
Dim Arr, vlArr(1 To 10000, 1 To 10), DL, I, J, Dic, Tem, x
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet8
Arr = .Range(.[B12], .[G65000].End(3)).Value
End With
For I = 1 To UBound(Arr, 1)
Tem = Arr(I, 1) & "#" & Arr(I, 3)
If Not Dic.exists(Tem) Then
Dic.Add Tem, Arr(I, 6)
Else
Dic.Item(Tem) = Dic.Item(Tem) + Arr(I, 6)
End If
Next I
With Sheet1
DL = .[A7:L70].Value
x = .[C5:L5].Value
For I = 1 To UBound(DL, 1)
For J = 1 To 10 Step 2
If Len(DL(I, 1)) Then Tem = x(1, J) & "#" & DL(I, 1)
If Dic.exists(Tem) Then
vlArr(I, J) = Dic.Item(Tem)
End If
Next J
Next I
.[D7].Resize(I, 10) = vlArr
End With
End Sub
Phần mua bạn nói bạn đã làm được rồi thì lấy code của bạn luôn đi (không muốn phá công sức bạn đã viết). Bỏ code tui viết bài trên vào 1 module. Trước chữ end sub code bạn viết trong sheet TUAN lấy phần mua qua thêm câu lệnh này.Lấy phần thanh toán ok rồi. Nhưng kết hợp với phần mua thì chưa load được
Call GPE
Để thử gọi hàm. Cảm ơn bạn nhiều.Phần mua bạn nói bạn đã làm được rồi thì lấy code của bạn luôn đi (không muốn phá công sức bạn đã viết). Bỏ code tui viết bài trên vào 1 module. Trước chữ end sub code bạn viết trong sheet TUAN lấy phần mua qua thêm câu lệnh này.
P/s: Xíu rảnh tui viết lại cho bạn 2 trong 1 cho gọn. Còn giờ bạn cứ xài tạm vậy đi.Mã:Call GPE
Code đặt trong sự kiện của Sheet TUAN ấy. hpkhuong lại xuất hiện. Thôi để anh ấy làm gọn phần còn lại cho chủ topic. (Vì code anh ấy luôn mượt mà hơn code của mình).Code GPE của bạn đâu? Phần mua đâu không thấy code???
Cuối bảng tính nó báo #n/a. Và những dòng không có Mã Khách Hàng thì ko điền giá trị. Vì dòng này mình làm công thức tổng. Khi load sẽ mất công thức. Bạn xem lại giúp.Đính kèm thêm file cho bạn tham khảo. Vì không thấy bạn phản hồi bạn có làm được chưa.
Giờ này bạn tìm không được chàng ấy đâu. Thử sửa lại code của chàng ấy như này:
Mã:Sub GPE() Dim Arr, vlArr(), DL, I, J, Dic, Tem, x Set Dic = CreateObject("Scripting.Dictionary") With Sheet8 Arr = .Range(.[B12], .[G65000].End(3)).Value End With For I = 1 To UBound(Arr, 1) Tem = Arr(I, 1) & "#" & Arr(I, 3) If Not Dic.exists(Tem) Then Dic.Add Tem, Arr(I, 6) Else Dic.Item(Tem) = Dic.Item(Tem) + Arr(I, 6) End If Next I With Sheet1 DL = .[A7:L70].Value x = .[C5:L5].Value vlArr = .Range("C7:L" & .Range("A65000").End(3).Row).FormulaR1C1 'ReDim vlArr(1 To UBound(DL, 1), 1 To 10) For I = 1 To UBound(DL, 1) If DL(I, 1) <> Empty Then For J = 1 To 10 Step 2 vlArr(I, J) = DL(I, J + 2) If Len(DL(I, 1)) Then Tem = x(1, J) & "#" & DL(I, 1) If Dic.exists(Tem) Then vlArr(I, J + 1) = Dic.Item(Tem) End If Next J End If Next I .Range("C7:L" & .Range("A65000").End(3).Row) = vlArr End With Set Dic = Nothing End Sub
Báo cáo tuần lấy dữ liệu từ 2 sheet chi tiêt và thu chi.
1/ phần lấy dữ liệu từ sheet chi tiết qua từng tuần ( cột mua hàng) mình đã làm rồi.
2/ Lấy dữ liệu từ sheet thu chi
Dữ liệu dựa vào mã khách hàng có sẳn cột A và dòng và tuần C5:L5
Cảm ơn
Cảm ơn bạn. Trước kia thì mình cũng code. Nhưng bỏ hơn 10 năm rồi. Nay đụng lại tư duy ko như trước được nên nhờ ae giúp đỡ. Sẳn tiện học hỏi lại.1/ Bạn đã "làm rồi" được cột Mua hàng mà cột Thanh toán dễ hơn rất nhiều sao bạn không làm luôn?
2/ Nếu là nhờ người khác làm thì nhờ 1 lần, người ta sẽ hình dung "cấu trúc" code 1 lần, dễ tư duy hơn là lắp ráp 1 code viết kiểu này, 1 code kiểu khác.
Bạn xem lại file này, lấy 2 cột Mua hàng và Thanh toán 1 lần. Các dòng công thức (Ô đầu dòng là rỗng) bạn tự nhập thủ công theo ý bạn.