langkhachquaduong
Thành viên chính thức
- Tham gia
- 23/7/19
- Bài viết
- 50
- Được thích
- 8
Mình có file báo cáo đính kèm bên dưới. Trong file mình có ghi đầy đủ kết quả mong muốn cửa mình. Rất mong các bạn giúp đỡ.
Mình dùng PivotTable rồi cũng copy vào trong file mẫu báo cáo của công ty. Mình chuyển sang xài vba sẽ tiện hơn.Excel sinh ra để hỗ trợ mình mà sao phải làm ngược lại vậy bạn??? Dùng PivotTable là ổn mà
[/QUOTEN
Chịu khó đọc lại bài viết của mình. Ghê rợn quá đi thôi.Mình có file báo cáo đính kèm bên dưới. Trong file mình có ghi đầy đủ kết quả mong muốn c** mình. Rất mong các bạn giúp đỡ.
Diễn tả kỹ quá hả bác.Chịu khó đọc lại bài viết của mình. Ghê rợn quá đi thôi.
Bạn giải thích giúp mình đoạn code này với:Mình sửa lại mấy chỗ. Câu lệnh nào sai chuyển thành ghi chú, câu lênh đúng ngay bên dưới.
Bạn Maika8008 rất hay trợ giúp mọi người !Mình sửa lại mấy chỗ. Câu lệnh nào sai chuyển thành ghi chú, câu lênh đúng ngay bên dưới.
À! Kq(k,4) = 1 là lần đầu tiên add item đếm nó =1 vào cột số 4 của mảng. Else... nghĩa là các lần sau , mỗi lần gặp item đó thì cộng 1 nữa vào cột 4 đóBạn giải thích giúp mình đoạn code này với:
kq(k, 4) = 1
Else
kq(dic.Item(arr(i, 2)), 4) = kq(dic.Item(arr(i, 2)), 4) + 1
Chưa tổng quát. Sao biết chắc là dòng 13, 16 là dòng tính tổng?À! Kq(k,4) = 1 là lần đầu tiên add item đếm nó =1 vào cột số 4 của mảng. Else... nghĩa là các lần sau , mỗi lần gặp item đó thì cộng 1 nữa vào cột 4 đó
theo mình hiểu ntn đúng ko:À! Kq(k,4) = 1 là lần đầu tiên add item đếm nó =1 vào cột số 4 của mảng. Else... nghĩa là các lần sau , mỗi lần gặp item đó thì cộng 1 nữa vào cột 4 đó
Bạn nhớ cho là mảng data nguồn là arr có 5 cột: 1-Ngày hóa đơn; 2- NV bán hàng; 3- Tên NPP; 4- Nhãn hàng; 4- Nhóm SPtheo mình hiểu ntn đúng ko:
1. Vế 1
kq(k,4) = 1 nó sẽ gán 1 theo số dòng của k
kq(1,4) =1
kq(2,4) =1
kq(3,4) =1
kq(4,4) =1
2. Vế 2
Else
kq(dic.Item(arr(i, 2)), 4) = kq(dic.Item(arr(i, 2)), 4) + 1
dic.Item(arr(i, 2)) nó cũng chạy từ 1 đến 4
nếu dic.Item(arr(i, 2))= 1
kq(1,4) = kq(1,4) + 1
mà kq(1,4) = 1 ở vế 1 thì
kq(1,4) = 2
Cám ơn bạn. Bạn học ở đâu mà giỏi thế. Có thể giới thiệu cho mình đk ko.Bạn nhớ cho là mảng data nguồn là arr có 5 cột: 1-Ngày hóa đơn; 2- NV bán hàng; 3- Tên NPP; 4- Nhãn hàng; 4- Nhóm SP
Tôi giải thích từ đây nhé:
If Not dic.Exists(arr(i, 2)) Then 'arr(i, 2) là tên NVBH Lê Thị Huyền hay gì đó. Nếu chưa có thì
k = k + 1 ' Phần tử thứ nhất của dic
dic.Add arr(i, 2), k ' Thêm 1 Item vào dic, đầu tiên là chị Lê Thị Huyền (nếu thỏa mãn điều kiện)
kq(k, 1) = arr(i, 2) ' Bắt đầu ghi vào mảng kết quả: chị Lê Thị Huyền được ghi vào mảng: kq (dòng k (k=1 vì là đầu tiên mà), cột 1)
kq(k, 2) = arr(i, 3) ' Tên NPP được ghi vào cột 2 dòng k
kq(k, 3) = arr(i, 4) ' Nhãn hàng ghi vào cột 3 dòng k
kq(k, 4) = 1 ' Rồi đây: thay vì ghi Alavie vào cột 4 thì ghi con số 1 vì đếm Alavie xuất hiện lần thứ 1
Else ' Trường hợp chị Lê Thị Huyền đã có thì
kq(dic.Item(arr(i, 2)), 4) = kq(dic.Item(arr(i, 2)), 4) + 1 'Cột 4 của item Lê Thị Huyền = Cột 4 của item Lê Thị Huyền + 1 (cộng 1 chứ không phải nối chữ Alavie vào chuỗi như code bạn làm)
CÁC CỘT TRƯỚC ĐÃ CÓ RỒI NÊN KHÔNG CẦN PHẢI GHI, THÊM GÌ CẢ
End If
Tôi đọc 1 bài viết giới thiệu dictionary của GPE rồi banh cái code ra tìm hiểu, viết lại, chạy thử, debug... đủ kiểu. Tất cả kiến thức VBA của tôi từ tự học cả, nên nhiều lúc cũng hơi lôm côm bởi thói quen khó bỏ.Cám ơn bạn. Bạn học ở đâu mà giỏi thế. Có thể giới thiệu cho mình đk ko.