Giúp em thay đổi một cột theo nhiều điều kiện các cột khác (1 người xem)

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

pinklove

Thành viên thường trực
Tham gia
21/1/08
Bài viết
336
Được thích
42
Em có một file số liệu đính kèm.
Hiện tại cột "Trạng thái" em đang phải tự điền vào. Bây giờ e muốn nó sẽ tự động điền theo sự thay đổi của cột "ADSL" và cột "MyTV", Các bác có thể giúp em giải quyết vấn đề này được không ạ.

Em đang dự tính theo phương án so sánh bằng màu ký tự hoặc bằng độ dài ký tự của 2 cột ADSL và MyTV để đưa ra kết quả cho cột Trạng thái không biết có thể không ạ. Có phương án nào tối ưu hơn không?.

Mong được sự giúp đỡ của mọi người ạ.
 
Lần chỉnh sửa cuối:
Công thức tại B9=IFERROR(IF(AND(C9<>0,D9<>0,C9+D9<>0),"M+A",IF(AND(C9<>0,D9=0),"A",IF(C9+D9=0,"T","M"))),"H")
Với Trường hợp điền ở trạng thái MW thì mình ko biết ở cột ADSL có số thuê bao mà lại điền là MW. Sao bạn ko làm riên 1 cột nữa ở mục Số thuê bao??
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Công thức tại B9=IFERROR(IF(AND(C9<>0,D9<>0,C9+D9<>0),"M+A",IF(AND(C9<>0,D9=0),"A",IF(C9+D9=0,"T","M"))),"H")
Với Trường hợp điền ở trạng thái MW thì mình ko biết ở cột ADSL có số thuê bao mà lại điền là MW. Sao bạn ko làm riên 1 cột nữa ở mục Số thuê bao??
Nhờ bạn kiểm tra lại giúp mình dùng công thức của bạn thì tất cả cột B trả về "H".
Riêng MW thì vì số cổng loại này rất ít, thường có vài cái nên mình không tạo thêm cột riêng mà những cổng này mình tự thay đổi thủ công cũng được.
 
Upvote 0
À, được rồi bạn à, có dấu cách ở chữ AND, mình bỏ đi là được. Nhưng công thức này vẫn chưa đưa ra được giải pháp cho hai trường hợp:
1. Ccổng dùng chung: Khi cả hai đều đang sử dụng là A+M, nhưng nếu cắt 1 trong hai dịch vụ thì chỉ còn là hoặc A hoặc M. Vì trong trường hợp tạm cắt mình không thể xóa số ở cổng đó được, sẽ bị mất dữ liệu nên có cách nào hơn không bạn, ví dụ số nào cắt thì thêm chữ C phía trước hoặc là một thao tác nào đó???
2. Ở những vị trí card chưa được lắp đặt, cột cổng sẽ không được đánh số thì ô trạng thái phải được trả về là ô trống chứ không phải là "T"
 
Lần chỉnh sửa cuối:
Upvote 0
À, được rồi bạn à, có dấu cách ở chữ AND, mình bỏ đi là được. Nhưng công thức này vẫn chưa đưa ra được giải pháp cho hai trường hợp:
1. Ccổng dùng chung: Khi cả hai đều đang sử dụng là A+M, nhưng nếu cắt 1 trong hai dịch vụ thì chỉ còn là hoặc A hoặc M. Vì trong trường hợp tạm cắt mình không thể xóa số ở cổng đó được, sẽ bị mất dữ liệu nên có cách nào hơn không bạn, ví dụ số nào cắt thì thêm chữ C phía trước hoặc là một thao tác nào đó???
2. Ở những vị trí card chưa được lắp đặt, cột cổng sẽ không được đánh số thì ô trạng thái phải được trả về là ô trống chứ không phải là "T"
Với những trường hợp như bạn nói. Theo tôi thì lên đưa thêm 2 cột vào bảng. Và 2 điều kiện nữa vào công thức. Với giữ liệu của bạn đưa thì khả năng của mình chỉ làm được vậy thôi. Chờ thêm xem có ai giúp ko. Hoặc những trường hợp ko nhiều thì đánh tay vậy
 
Upvote 0
À, được rồi bạn à, có dấu cách ở chữ AND, mình bỏ đi là được. Nhưng công thức này vẫn chưa đưa ra được giải pháp cho hai trường hợp:
1. Ccổng dùng chung: Khi cả hai đều đang sử dụng là A+M, nhưng nếu cắt 1 trong hai dịch vụ thì chỉ còn là hoặc A hoặc M. Vì trong trường hợp tạm cắt mình không thể xóa số ở cổng đó được, sẽ bị mất dữ liệu nên có cách nào hơn không bạn, ví dụ số nào cắt thì thêm chữ C phía trước hoặc là một thao tác nào đó???
2. Ở những vị trí card chưa được lắp đặt, cột cổng sẽ không được đánh số thì ô trạng thái phải được trả về là ô trống chứ không phải là "T"
Đúng là lu xu bu và trường hợp nào là "trống", trường hợp nào là "T", trường hợp nào là "MW"...
Xem tạm file này, nếu cần thì thêm vài cái IF() nữa.
 

File đính kèm

Upvote 0
Cảm ơn pro Ba Tê nhiều lắm, công thức gần chuẩn với ý em rồi ạ. Nhờ pro giúp em thêm chút ít. Cột "Cổng" e sẽ đánh số thủ công vì nó phụ thuộc vào số card, và vị trí card được lắp đặt. Vì vậy nên không cần công thức cho nó.
Bên cạnh đó, vì còn phụ thuộc vào cột cổng, nên trước khi xét đến cột C và D thì phải xét xem cột cổng có đánh số không đã. Nếu không thì dù C và D thế nào cũng trả về trạng thái là trống (""). còn nếu có thì mới xét tiếp như công thức của anh, và khi đó nếu cả C và D đều trống thì trả về "T".
Em cảm ơn pro nhiều ạ.
 
Upvote 0
Em sửa công thức thành thế này

B11=IF(COUNT(A11)=0,"",IF(COUNT(C11:D11)=2,"A+M",IF(COUNT(C11)=1,"A",IF(COUNT(D11)=1,"M",IF(COUNTIF(C11:D11,"*C*"),"C",IF(COUNTIF(C11:D11,"*H*"),"H",IF(COUNTIF(C11:D11,"*MW*"),"MW","T")))))))

Thấy có vẻ ổn rồi. Thuê bao MW cũng chỉ thêm chữ MW phía trước chứ ko cần điền thủ công nữa.

Những vẫn có một vấn đề, Pro Ba Tê và các bác giúp em với, khi em xóa dữ liệu ở cột C và D rồi nhập lại thủ công thì trạng thái chuyển đúng, nhưng khi em CUT và PASTE, ví dụ cổng 1 hỏng nên chuyển sang cổng 2, CUT số PASTE sang thì trạng thái nó không đổi được, nhờ các pro chỉ giúp em cách sửa luôn.
 
Lần chỉnh sửa cuối:
Upvote 0
Em sửa công thức thành thế này

B11=IF(COUNT(A11)=0,"",IF(COUNT(C11:D11)=2,"A+M",IF(COUNT(C11)=1,"A",IF(COUNT(D11)=1,"M",IF(COUNTIF(C11:D11,"*C*"),"C",IF(COUNTIF(C11:D11,"*H*"),"H",IF(COUNTIF(C11:D11,"*MW*"),"MW","T")))))))

Thấy có vẻ ổn rồi. Thuê bao MW cũng chỉ thêm chữ MW phía trước chứ ko cần điền thủ công nữa.

Những vẫn có một vấn đề, Pro Ba Tê và các bác giúp em với, khi em xóa dữ liệu ở cột C và D rồi nhập lại thủ công thì trạng thái chuyển đúng, nhưng khi em CUT và PASTE, ví dụ cổng 1 hỏng nên chuyển sang cổng 2, CUT số PASTE sang thì trạng thái nó không đổi được, nhờ các pro chỉ giúp em cách sửa luôn.

Thử CUT - PASTE xem có được chưa?
 

File đính kèm

Upvote 0
Bác Ba Tê hay có pro nào giải thích giúp em cái vụ "=LuBu" trong file của pro Ba Tê với. Em muốn hiểu vì sao làm được như thế.
 
Upvote 0
Bác Ba Tê hay có pro nào giải thích giúp em cái vụ "=LuBu" trong file của pro Ba Tê với. Em muốn hiểu vì sao làm được như thế.
Bạn ấn Ctrl+F3 lên, lubu được đặt bằng name
PHP:
=IF(COUNT(OFFSET(Thái!$A$8,ROWS(Thái!$1:178),))=0,"",IF(COUNT(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2))=2,"A+M",IF(COUNT(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),))=1,"A",IF(COUNT(OFFSET(Thái!$D$8,ROWS(Thái!$1:178),))=1,"M",IF(COUNTIF(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2),"*C*"),"C",IF(COUNTIF(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2),"*H*"),"H",IF(COUNTIF(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2),"*MW*"),"MW","T")))))))
Lù bù đó
 
Upvote 0
Bạn ấn Ctrl+F3 lên, lubu được đặt bằng name
PHP:
=IF(COUNT(OFFSET(Thái!$A$8,ROWS(Thái!$1:178),))=0,"",IF(COUNT(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2))=2,"A+M",IF(COUNT(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),))=1,"A",IF(COUNT(OFFSET(Thái!$D$8,ROWS(Thái!$1:178),))=1,"M",IF(COUNTIF(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2),"*C*"),"C",IF(COUNTIF(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2),"*H*"),"H",IF(COUNTIF(OFFSET(Thái!$C$8,ROWS(Thái!$1:178),,,2),"*MW*"),"MW","T")))))))
Lù bù đó
Cảm ơn bạn, cái này có vẻ khó hiểu hơn cái code VBA nhỉ. Ngồi nhìn mãi chưa ra cái gì. --=0 Bạn có thời gian giải thích hộ mình được không? Để mình muốn sửa lại cho cái bảng thứ 2 mà bạn chỉ cho mình thay range và thứ tự cột ấy. Mình chỉ muốn hiểu để học hỏi thôi.
 
Upvote 0

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

Back
Top Bottom