[help] Phân chia danh sách có điều kiện (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

concuarangme

Thành viên chính thức
Tham gia
6/1/09
Bài viết
97
Được thích
0
Mình có 1 file bao gồm 2 sheet

- KhachHang : danh sách các khách hàng ở các Tỉnh/Thành , Quận/Huyện
- QuanHuyen : danh sách các nhân viên phụ trách từng khu vực và bảng mã các khu vực lân cận

Mỗi ngày mình chia danh sách = tay nhưng bây giờ nhiều quá mình làm ko hết được, các bạn giúp mình viết code phân chia danh sách KH cho các NV (sheet "QuanHuyen") phụ trách cùng khu vực KH ở (theo thứ tự từ trên xuống dưới, đến khi nào đến NV cuối cùng trong khu vực thì mới quay trở lại NV đầu tiên trong khu vực.

Ví dụ 1:
Khách hàng:
A - HCM - Q1
B - HCM - Q1
C - HCM - Q1

Nhân viên:
X - HCM - Q1
Y - HCM - Q1

Phân chia danh sách:
A --> X
B --> Y
C --> X



- Tại khu vực KH ở mà ko có NV phụ trách thì sẽ so sánh khu vực KH ở với sheet "QuanHuyen" để phân chia cho NV phụ trách có khu vực lân cận với KH (theo thứ tự từ trên xuống dưới, đến khi nào đến NV cuối cùng trong khu vực lân cận thì mới quay trở lại NV đầu tiên trong khu vực lân cận)

Ví dụ 2:
Khách hàng:
A - HCM - Q1
B - HCM - Q2
C - HCM - Q3


Nhân viên:
X - HCM - Q1
Y - HCM - Q3
Z - HCM - Q3

Phân chia danh sách:
A --> X
B --> Y
(do KH B thuộc Q2 nhưng ko có NV phụ trách Q2, ta sẽ so sánh sheet "QuanHuyen" thấy khu vực Q2 gần Q3 và sẽ chia cho NV khu vực Q3)
C --> Z


Xin cảm ơn các bạn nhiều.
 

File đính kèm

Dưới đây là cách đơn giản (chỉ phân cho những ai có địa chỉ cùng với địa chỉ của khách hàng thôi), từ đó bạn có thể phát triển tiếp.
PHP:
Private Sub Worksheet_Activate()
Dim i%, j%: i = 1: j = 1
Do: i = i + 1
Do: j = j + 1
If Trim(Range("B" & i)) & Trim(Range("C" & i)) = _
Trim(Sheets("QuanHuyen").Range("D" & j)) & Trim(Sheets("QuanHuyen").Range("C" & j)) Then
Range("D" & i) = Sheets("QuanHuyen").Range("A" & j)
Range("E" & i) = Sheets("QuanHuyen").Range("B" & j)
End If
Loop Until Trim(Sheets("QuanHuyen").Range("A" & j)) = Empty
j = 1
Loop Until Trim(Range("A" & i)) = Empty
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dưới đây là cách đơn giản (chỉ phân cho những ai có địa chỉ cùng với địa chỉ của khách hàng thôi), từ đó bạn có thể phát triển tiếp.
PHP:
Private Sub Worksheet_Activate()
Dim i%, j%: i = 1: j = 1
Do: i = i + 1
Do: j = j + 1
If Trim(Range("B" & i)) & Trim(Range("C" & i)) = _
Trim(Sheets("QuanHuyen").Range("D" & j)) & Trim(Sheets("QuanHuyen").Range("C" & j)) Then
Range("D" & i) = Sheets("QuanHuyen").Range("A" & j)
Range("E" & i) = Sheets("QuanHuyen").Range("B" & j)
End If
Loop Until Trim(Sheets("QuanHuyen").Range("A" & j)) = Empty
j = 1
Loop Until Trim(Range("A" & i)) = Empty
End Sub

cảm ơn bạn đã quan tâm, bạn có thể giúp mình luôn phần ví dụ 2 nhé, vì VBA mình không biết code nên chỉ có thể đọc hiểu, chứ mình không viết được code.
 
Upvote 0
Các bạn giúp mình trường hợp này với.
untitled.jpg

Nếu KH ở District 1 nhưng ko có NV phụ trách District 1 thì sẽ chia cho NV ở District 2. Nếu ko có NV District 2 thì chia cho District 3. Nếu ko có NV District 3 thì chia cho District 4. Nếu ko có NV ở District 4 thì bỏ trống

Nói thật với bạn, địa chỉ trùng nhau lung tung thế thì có thánh mà phân chia nổi.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình nghĩ viết code theo hình này sẽ có thể đơn giản hơn ko bạn, vì mình ko biết VBA nên chưa biết cách viết code ntn cho chạy theo đúng như thế. Bạn và các bạn trong diễn đàn xem và có thể hổ trợ giúp mình với nhé. Xin cảm ơn rất nhiều.

1347898093929547_574_574.jpg
[/URL][/IMG]
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom