Xin công thức IF nhiều lần lặp (1 người xem)

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

Manofwar77

Thành viên chính thức
Tham gia
24/2/09
Bài viết
77
Được thích
1
Nghề nghiệp
Insurance field
Chào các bác em là mem mới mày mò nhiều mà vẫn ko nhớ dc mấy cái IF căn bản này thật là nhục quá. Hiện giờ em có 1 ô cần phải hiểu nó như sau:
Ô A1 thì có 1 số mã A, OP, MODH, OPPN, S, D... và ô bên cạnh em muốn nó hiểu dịch ra nghĩa:
Nếu OP thì nó dịch ra là : Ngoại trú
MOTH : Chờ giải quyết
A: Tai nạn ( Cứ bắt đầu là A thì dịch ra là Tai nạn)
D: Điều trị răng ( Cứ bắt đầu là D thì dịch ra là Điều trị răng)
H: Nằm viện ( Cứ bắt đầu là H thì dịch ra là Nằm viện)
OPPN: Điều trị ngoại trú khám thai trước khi sinh
Em đính kèm file. Nhờ các bác chỉ giáo.
Em muốn theo học lớp cơ bản làm sao để gặp việc là nghĩ ra cách làm chứ cứ thế này thì ko ổn, bác nào chỉ giúp em bắt đầu kiểm tra trình độ ở đâu và chỗ nào dạy với ạ.
 

File đính kèm

Chào các bác em là mem mới mày mò nhiều mà vẫn ko nhớ dc mấy cái IF căn bản này thật là nhục quá. Hiện giờ em có 1 ô cần phải hiểu nó như sau:
Ô A1 thì có 1 số mã A, OP, MODH, OPPN, S, D... và ô bên cạnh em muốn nó hiểu dịch ra nghĩa:
Nếu OP thì nó dịch ra là : Ngoại trú
MOTH : Chờ giải quyết
A: Tai nạn ( Cứ bắt đầu là A thì dịch ra là Tai nạn)
D: Điều trị răng ( Cứ bắt đầu là D thì dịch ra là Điều trị răng)
H: Nằm viện ( Cứ bắt đầu là H thì dịch ra là Nằm viện)
OPPN: Điều trị ngoại trú khám thai trước khi sinh
Em đính kèm file. Nhờ các bác chỉ giáo.
Em muốn theo học lớp cơ bản làm sao để gặp việc là nghĩ ra cách làm chứ cứ thế này thì ko ổn, bác nào chỉ giúp em bắt đầu kiểm tra trình độ ở đâu và chỗ nào dạy với ạ.
Nhận file nhe bạn:
P/s: thiếu gì bạn thêm bên bảng màu vàng và sửa vùng dữ liệu của CT lại /-*+/
 

File đính kèm

Nhận file nhe bạn:
P/s: thiếu gì bạn thêm bên bảng màu vàng và sửa vùng dữ liệu của CT lại /-*+/
Vâng, cảm ơn bác nhiều. Em muốn hỏi là bảng tính của em ko muốn thêm vùng dữ liệu gì mà gõ luôn công thức if 5 lần vào có được ko bác ? Em đang theo phương án là ko thêm gì vào cái file này nữa mà gõ luôn công thức.
 
Vâng, cảm ơn bác nhiều. Em muốn hỏi là bảng tính của em ko muốn thêm vùng dữ liệu gì mà gõ luôn công thức if 5 lần vào có được ko bác ? Em đang theo phương án là ko thêm gì vào cái file này nữa mà gõ luôn công thức.
Vậy thì như vầy:
Mã:
=IF(COUNTIF(C2,"OP*"),"Ngoai tru",IF(COUNTIF(C2,"A*"),"Tai nan",IF(COUNTIF(C2,"D*"),"Dieu tri rang",IF(COUNTIF(C2,"H*"),"Nam vien",IF(COUNTIF(C2,"OPPN*"),"Dieu tri ngoai tru kham thai truoc khi sinh","Cho giai quyet")))))
Rồi fill xuống!!!
 
Vâng, cảm ơn bác nhiều. Em muốn hỏi là bảng tính của em ko muốn thêm vùng dữ liệu gì mà gõ luôn công thức if 5 lần vào có được ko bác ? Em đang theo phương án là ko thêm gì vào cái file này nữa mà gõ luôn công thức.
=IF(LEFT(C2,4)="MOTH","Pending",IF(C2="OPPN","Điều trị ngoại trú khám thai trước sinh",IF(LEFT(C2,2)="OP","Ngoại trú",IF(LEFT(C2,1)="A","Tai nạn",IF(LEFT(C2,1)="D","Điều trị răng",IF(LEFT(C2,1)="H","Nằm viện","Khác"))))))
Có cái nó k nằm trong những TH kia thì mình để là Khác
 
Lần chỉnh sửa cuối:
Vâng, cảm ơn bác nhiều. Em muốn hỏi là bảng tính của em ko muốn thêm vùng dữ liệu gì mà gõ luôn công thức if 5 lần vào có được ko bác ? Em đang theo phương án là ko thêm gì vào cái file này nữa mà gõ luôn công thức.
Hoặc thử cách này:
=LOOKUP(2,1/COUNTIF(C2,{"","OP","MOTH","A","D","H","OPPN"}&"*"),{"Khác","Ngoại trú","Chờ giải quyết","Tai nạn","Điều trị răng","Nằm viện","Điều trị ngoại trú khám thai trước khi sinh"})
 
Vậy thì như vầy:
Mã:
=IF(COUNTIF(C2,"OP*"),"Ngoai tru",IF(COUNTIF(C2,"A*"),"Tai nan",IF(COUNTIF(C2,"D*"),"Dieu tri rang",IF(COUNTIF(C2,"H*"),"Nam vien",IF(COUNTIF(C2,"OPPN*"),"Dieu tri ngoai tru kham thai truoc khi sinh","Cho giai quyet")))))
Rồi fill xuống!!!
Vâng, cảm ơn bác nhiều. Đúng ý em ạ.
 
Vậy thì như vầy:
Mã:
=IF(COUNTIF(C2,"OP*"),"Ngoai tru",IF(COUNTIF(C2,"A*"),"Tai nan",IF(COUNTIF(C2,"D*"),"Dieu tri rang",IF(COUNTIF(C2,"H*"),"Nam vien",IF(COUNTIF(C2,"OPPN*"),"Dieu tri ngoai tru kham thai truoc khi sinh","Cho giai quyet")))))
Rồi fill xuống!!!
Cái này gặp lỗi giống như khi em dùng if ạ. Nếu giá trị là OPPN nó sẽ lấy là ngoại trú vì hàm if đó thực hiện trước chứ k lấy giá tri là Điều trị ngoại trú khám thai trước khi sinh ạ
 
Vậy thì như vầy:
Mã:
=IF(COUNTIF(C2,"OP*"),"Ngoai tru",IF(COUNTIF(C2,"A*"),"Tai nan",IF(COUNTIF(C2,"D*"),"Dieu tri rang",IF(COUNTIF(C2,"H*"),"Nam vien",IF(COUNTIF(C2,"OPPN*"),"Dieu tri ngoai tru kham thai truoc khi sinh","Cho giai quyet")))))
Rồi fill xuống!!!
Vâng cảm ơn bác nhiều.
 
Cái này gặp lỗi giống như khi em dùng if ạ. Nếu giá trị là OPPN nó sẽ lấy là ngoại trú vì hàm if đó thực hiện trước chứ k lấy giá tri là Điều trị ngoại trú khám thai trước khi sinh ạ
Hi, cám ơn chị, em thấy lỗi đó rồi, bạn chủ topic bỏ CT #4 dùm mình, bạn sài CT bài #5,#6 được đó bạn +-+-+-+
 
Hoặc thử cách này:
=LOOKUP(2,1/COUNTIF(C2,{"","OP","MOTH","A","D","H","OPPN"}&"*"),{"Khác","Ngoại trú","Chờ giải quyết","Tai nạn","Điều trị răng","Nằm viện","Điều trị ngoại trú khám thai trước khi sinh"})
Cái này của bác cũng hay và ngắn gọn có điều em chưa hiểu cú pháp nên chưa làm lại đc. Bác có thể giải thích giúp đc ko ạ. Cảm ơn bác nhiều.
 
Cái này của bác cũng hay và ngắn gọn có điều em chưa hiểu cú pháp nên chưa làm lại đc. Bác có thể giải thích giúp đc ko ạ. Cảm ơn bác nhiều.

Chào Manofwar77,

Công thức của bạn phuocam là LOOKUP vector, nó gồm các đối số:
. Giá trị tìm (lookup_value) = 2
. Vector tìm (lookup_vector) = 1/COUNTIF(C2,{"","OP","MOTH","A","D","H","OPPN"}&"*" )
. Vector kết quả (result_vector) = {"Khác","Ngoại trú","Chờ giải quyết","Tai nạn","Điều trị răng","Nằm viện","Điều trị ngoại trú khám thai trước khi sinh"}

1. Mục tiêu của Countif: là đếm giá trị ô C2 có trong mảng {"*","OP*","MOTH*","A*","D*","H*","OPPN*"}({"","OP","MOTH","A","D","H","OPPN"} kết hợp với ký tự đại diện '*'(ý nghĩa: thêm ký tư bất kỳ khác phía sau), thành mảng {"*","OP*","MOTH*","A*","D*","H*","OPPN*"}),
Ví dụ: C2= "OPPN", ta có:
"OPPN" = ="*" (hay = "OPPN") => TRUE
"OPPN" = "OP*" => TRUE
"OPPN" = "MOTH*" => FALSE
"OPPN" = "A*" => FALSE
"OPPN" = "D*" => FALSE
"OPPN" = "H*" => FALSE
"OPPN" = "OPPN*" => TRUE
thì Countif cho ra mảng sau trong bộ nhớ: {1,1,0,0,0,0,1}

2. Mục tiêu của Lookup: Nếu giá trị tìm (=2) lớn hơn tất cả các giá trị trong mảng "vector tìm", thì lookup sẽ lấy giá trị gần khớp sau cùng trong mảng "vector tìm" làm vị trí điều hướng cho vector kết quả, ta có:

Vector tìm
: 1/Countif(....) = 1/ {1,1,0,0,0,0,1} = {1,1,#Div0!,#Div0!,#Div0!,#Div0!,1}

Một đặc tính hay của Lookup là nó phớt lờ các giá trị báo lỗi trong mảng. Ta thấy có ba giá trị 1 nằm tại vị trí thứ: nhất, hai và bảy, nên nó sẽ lấy giá trị 1 vị trí thứ 7 chính là số gần khớp sau cùng so với giá trị tìm 2

Đến đây, có thể biểu diễn Lookup như sau:
=LOOKUP(2, {1,1,#D!,#D!,#D!,#D!,1} , {"Khác","Ngoại trú","Chờ giải quyết","Tai nạn","Điều trị răng","Nằm viện","Điều trị ngoại trú khám thai trước khi sinh"} )Mảng vector kết quả lấy vị trí thứ 7 chính là chuỗi: "Điều trị ngoại trú khám thai trước khi sinh"

Tương tự bạn có thể luận như trên cho các trường hợp khác.

Chúc bạn ngày vui.
 
Lần chỉnh sửa cuối:
Chào Manofwar77,

Công thức của bạn phuocam là LOOKUP vector, nó gồm các đối số:
. Giá trị tìm (lookup_value) = 2
. Vector tìm (lookup_vector) = 1/COUNTIF(C2,{"","OP","MOTH","A","D","H","OPPN"}&"*" )
. Vector kết quả (result_vector) = {"Khác","Ngoại trú","Chờ giải quyết","Tai nạn","Điều trị răng","Nằm viện","Điều trị ngoại trú khám thai trước khi sinh"}

1. Mục tiêu của Countif: là đếm giá trị ô C2 có trong mảng {"*","OP*","MOTH*","A*","D*","H*","OPPN*"}({"","OP","MOTH","A","D","H","OPPN"} kết hợp với ký tự đại diện '*'(ý nghĩa: thêm ký tư bất kỳ khác phía sau), thành mảng {"*","OP*","MOTH*","A*","D*","H*","OPPN*"}),
Ví dụ: C2= "OPPN", ta có:
"OPPN" = ="*" (hay = "OPPN") => TRUE
"OPPN" = "OP*" => TRUE
"OPPN" = "MOTH*" => FALSE
"OPPN" = "A*" => FALSE
"OPPN" = "D*" => FALSE
"OPPN" = "H*" => FALSE
"OPPN" = "OPPN*" => TRUE
thì Countif cho ra mảng sau trong bộ nhớ: {1,1,0,0,0,0,1}

2. Mục tiêu của Lookup: Nếu giá trị tìm (=2) lớn hơn tất cả các giá trị trong mảng "vector tìm", thì lookup sẽ lấy giá trị gần khớp sau cùng trong mảng "vector tìm" làm vị trí điều hướng cho vector kết quả, ta có:

Vector tìm
: 1/Countif(....) = 1/ {1,1,0,0,0,0,1} = {1,1,#Div0!,#Div0!,#Div0!,#Div0!,1}

Một đặc tính hay của Lookup là nó phớt lờ các giá trị báo lỗi trong mảng. Ta thấy có ba giá trị 1 nằm tại vị trí thứ: nhất, hai và bảy, nên nó sẽ lấy giá trị 1 vị trí thứ 7 chính là số gần khớp sau cùng so với giá trị tìm 2

Đến đây, có thể biểu diễn Lookup như sau:
=LOOKUP(2, {1,1,#D!,#D!,#D!,#D!,1} , {"Khác","Ngoại trú","Chờ giải quyết","Tai nạn","Điều trị răng","Nằm viện","Điều trị ngoại trú khám thai trước khi sinh"} )Mảng vector kết quả lấy vị trí thứ 7 chính là chuỗi: "Điều trị ngoại trú khám thai trước khi sinh"

Tương tự bạn có thể luận như trên cho các trường hợp khác.

Chúc bạn ngày vui.
Vâng cảm ơn bác. Em đọc thấy nó hơi lằng nhằng do chưa quen dùng. Có lẽ em phải thử vài ví dụ đơn giản rồi đi vào thực tế bài này. Cảm ơn bác đã hỗ trợ.
 

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

Back
Top Bottom