VBA If lồng - lấy điều kiện nếu khác trống (1 người xem)

Liên hệ QC

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

loinguyen212

Thành viên thường trực
Tham gia
21/2/14
Bài viết
254
Được thích
35
Chào mọi người,

Em có một bảng danh mục, trong đó có nhiều điều kiện, khi nhập liệu vào bảng, sẽ đưa dữ liệu vào validation dựa theo điều kiện của mục trước (đã nhập), nếu mục trước bỏ trống, nó sẽ bỏ qua điều kiện đó. Cứ loay hoay mãi ở chỗ này mà thấy bị vướng vướng, không giải thuật nổi.+-+-+-++-+-+-++-+-+-+
Trong file em có đưa dữ liệu, nhờ mọi người giúp đỡ.

Thân!
 

File đính kèm

Ngoài việc đưa dữ liệu như vậy, bạn cần mô tả kết quả đạt được mong muốn mới được.

Giả dụ khi chọn cột [A] tại ô [j12] có danh sách nào đổ xuống ({A,B,C})
Nếu tiếp theo chọn trị A trong danh sách đó thì danh sách nào sẽ xuất hiện trong [j14]
. . . . . .
 
Upvote 0
Ngoài việc đưa dữ liệu như vậy, bạn cần mô tả kết quả đạt được mong muốn mới được.

Giả dụ khi chọn cột [A] tại ô [j12] có danh sách nào đổ xuống ({A,B,C})
Nếu tiếp theo chọn trị A trong danh sách đó thì danh sách nào sẽ xuất hiện trong [j14]
. . . . . .
Nó sẽ lấy theo điều kiện của trường trước như sau ạ:
chọn từ J12 đến J22:
- J12 có danh sách {A,B,C}
- J14 có danh sách theo điều kiện của J12 (ví dụ J12 = A thì danh sách của J14 {A1,A2,A3} , J12 = B thì bỏ qua)
- J16 có danh sách theo điều kiện của J12, J14 (ví dụ J12 =C, J14 = C13, thì ds của J16 là {C21,C22})
.....
 
Upvote 0
- J12 có danh sách {A,B,C}

này chắc phải có 1 hàm group cột lại rồi .
1) là lọc ra các code theo điều kiện trước
2) group lại và xuất ra list box hay chỗ nào đó !


 
Upvote 0
Nó sẽ lấy theo điều kiện của trường trước như sau ạ:
chọn từ J12 đến J22:
- J12 có danh sách {A,B,C}
- J14 có danh sách theo điều kiện của J12 (ví dụ J12 = A thì danh sách của J14 {A1,A2,A3} , J12 = B thì bỏ qua)
- J16 có danh sách theo điều kiện của J12, J14 (ví dụ J12 =C, J14 = C13, thì ds của J16 là {C21,C22})
.....

Bạn dùng thử cái này coi sao nhé. File thật chắc là không giống file này và code cũng không xài được.
Chỉ là thấy hơi lạ nên tôi làm thử thôi.
 

File đính kèm

Upvote 0
Bạn dùng thử cái này coi sao nhé. File thật chắc là không giống file này và code cũng không xài được.
Chỉ là thấy hơi lạ nên tôi làm thử thôi.
Không hiểu sao không tìm thấy cái nút like-thank. -+*/
Em cảm ơn. Cái cách bác giải thuật cũng khác người, em lại học thêm được bác một chiêu nữa rồi.
Cái đích cuối cùng của em để tìm ra cái giá thôi. đơn giản vậy.
Có điều này em muốn thỉnh giáo thêm, có trường hợp không chọn tuần tự, mà chọn J12 =A rồi nhảy đến luôn vị trí (bỏ qua 2 bước kia) thì nó sẽ đưa ra ds {vitri1,vitri2,vitri6}. Hoặc giả như không chọn A nữa mà chọn luôn mục ĐVT thì nó trả luôn ds {kg, tạ, tấn}.
Nhờ bác chỉ thêm ạ!

Có nhược điểm khi không sử dụng Dic ở bài toán này đó là trường hợp trong cùng một mục có 2 giá trị như ABC và AB (nó sẽ lấy mỗi ABC và bỏ qua AB)
Và nếu giá trị trong danh mục chứa dấu ","
hàm InStr đưa chuỗi vào Vali và nó sẽ hiểu sai.

 
Lần chỉnh sửa cuối:
Upvote 0
Không hiểu sao không tìm thấy cái nút like-thank. -+*/
Em cảm ơn. Cái cách bác giải thuật cũng khác người, em lại học thêm được bác một chiêu nữa rồi.
Cái đích cuối cùng của em để tìm ra cái giá thôi. đơn giản vậy.
Có điều này em muốn thỉnh giáo thêm, có trường hợp không chọn tuần tự, mà chọn J12 =A rồi nhảy đến luôn vị trí (bỏ qua 2 bước kia) thì nó sẽ đưa ra ds {vitri1,vitri2,vitri6}. Hoặc giả như không chọn A nữa mà chọn luôn mục ĐVT thì nó trả luôn ds {kg, tạ, tấn}.
Nhờ bác chỉ thêm ạ!

Có 2 nhược điểm khi không sử dụng Dic ở bài toán này đó là nếu giá trị trong danh mục chứa dấu ","
Hàm InStr đưa chuỗi vào Vali và nó sẽ hiểu sai.
và trường hợp trong cùng một mục có 2 giá trị như ABC và AB (nó sẽ lấy mỗi ABC và bỏ qua AB).


Tôi có viết là file thật sẽ không xài được, bạn tùy chỉnh thôi.
Có điều này em muốn thỉnh giáo thêm, có trường hợp không chọn tuần tự, mà chọn J12 =A rồi nhảy đến luôn vị trí (bỏ qua 2 bước kia) thì nó sẽ đưa ra ds {vitri1,vitri2,vitri6}. Hoặc giả như không chọn A nữa mà chọn luôn mục ĐVT thì nó trả luôn ds {kg, tạ, tấn}
Nhờ bác chỉ thêm ạ!.
Nếu bạn nói rõ yêu cầu từ đầu thì xong rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi có viết là file thật sẽ không xài được, bạn tùy chỉnh thôi.

Nếu bạn nói rõ yêu cầu từ đầu thì xong rồi.
Thực ra ban đầu nhu cầu của em cũng chỉ cần thế thôi, nhưng khi lựa chọn rồi, mới suy nghĩ và phát sinh thêm như vậy. Nhưng khi mở rộng hơn cũng sẽ khó lường nhiều trường hợp xảy ra.
 
Upvote 0
Thực ra ban đầu nhu cầu của em cũng chỉ cần thế thôi, nhưng khi lựa chọn rồi, mới suy nghĩ và phát sinh thêm như vậy. Nhưng khi mở rộng hơn cũng sẽ khó lường nhiều trường hợp xảy ra.

Mới vừa thấy nhu cầu đã bước đi hỏi cách giải quyết là hành động nông nổi của dân mới vào nghề.
Nên tập thói quen thấy nhu cầu rồi thì vẽ ra giấy, tính thêm các trường hợp do kết quả này sinh ra điều kiện kia. Sau khi thành thục rồi, thì học cách nhìn ra các trường hợp ngoại lệ.
Phai năm vững các trường hợp ngoại lệ thì mới có thể coi như mình làm chủ dữ liệu của mình. Chưa đạt đến mức này thì bạn là nô lệ của nó.
 
Upvote 0
Web KT

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

Back
Top Bottom