Giúp Mình Giải Vấn đề Hóc Búa Này !

  • Thread starter buidinh
  • Ngày gửi
B

buidinh

Guest
6/2/07
6
0
0
40
Hp
Mình giải 1 fie Excel gặp một vấn đề sau :
Có 2 công thức sau :

=INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,5,2),G21),FL!$J:$J,0),0)

=INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,8,2),G21),FL!$J:$J,0),0)

Mình muốn thực hiện nó trên 1 dòng, và chỉ muốn nó thực hiện 1 trong 2 phép tính này khi 1 trong 2 phép tính này đúng. (kô bao giờ 2 phép tính này cùng đúng)
Có cách nào không các bác !
_________________________________________________

Vấn đề thứ 2 :

Khi phép tính được giải, với 1 số "ô trống" kô có giá trị (kô đúng) nó trả về giá trị N/A.
Có cách nào cho nó không trả về N/A mà trả về 1 giá trị bất kì nào đó như "-" hoặc là để trống nếu không thực hiện được không?

Thank ALL
 
Khóa học Quản trị dòng tiền
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Không khó lắm đâu! Có điều công thức sẽ rất dài với hàm CONCATENATE, bạn có thể đơn giản thay thế hàm trên bằng toán tử & để nối 2 chuỗi.
Đầu tiên bạn kiểm tra các giá trị:
CONCATENATE(MID($A$1,5,2),G21) (XXX)

CONCATENATE(MID($A$1,8,2),G21) (YYY)
có tồn tại trong cột J hay không. Theo bạn nói, không bao giờ 2 phép tính này cùng đúng! Tôi giả sử nếu "cùng đúng" thì ưu tiên cho chuổi 2 ký tự thứ 5.
Bạn dùng làm ISNA để kiểm tra, để đơn giản thì giá trị đầu tiên của cột C (Ô C1) ta gán giá trị "-" hay giá trị mặc định mà bạn cần trả về nếu tìm trong cột J không thấy cả (XXX) và (YYY). Đương nhiên, giá trị tương ứng ở cột J (ô J1) ta cũng gán 1 giá trị nào đó hoặc tốt nhất để trống.
Biểu thức kiểm tra:
IF(ISNA(MATCH(XXX,FL!$J:$J,0),IF(ISNA(MATCH(YYY,FL!$J:$J,0),1,MATCH(YYY,FL!$J:$J,0)),(MATCH(XXX,FL!$J:$J,0)) (ZZZ)
Kết quả của biểu thức này hoặc là vị trí của 1 trong 2 biến số XXX hoặc YYY trong cột J, hoặc là giá trị 1 nếu cả 2 giá trị XXX và YYY đề không tìm được trong cột J.
Bước cuối cùng là hàm INDEX: =INDEX(FL!$C:$C,ZZZ,0)
Mẹo: Hàm sẽ rất dài, mặc dù tôi đã rút gọn bằng các giá trị XXX và YYY. Bạn hãy đặt biểu thức XXX và YYY vào 2 Name tương ứng sao cho tham chiếu G21 tương ứng với ô bạn nhập công thức (Xem bài Sức mạnh của Name) thì công thức của bạn sẽ trở nên ngắn gọn đúng như ZZZ!
Note: Công thức tôi chỉ tự lập, chưa test thử!
 
B

buidinh

Guest
6/2/07
6
0
0
40
Hp
=IF(ISNA(INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,5,2),G21),FL!$J:$J,0),0)),"-",INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,5,2),G21),FL!$J:$J,0),0))

Mình giải quyết được vấn đề nếu giá trị đúng thì đưa ra giá trị đó, còn nếu sai thì nó đưa ra giá trị " - "

Tuy nhiên không thể add thêm điều kiện
INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,8,2),G21),FL!$J:$J,0),0))

Hix, nó báo quá dài hoặc không đúng, bạn có thể viết thử giùm ?
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Có thể do dữ liệu không phù hợp, thí dụ chuổi A1 không có đủ 8 ký tự chẳng hạn.
Để chắc chắn hơn bạn có thể gửi file cho mình qua email adam.tranvn@gmail.com, mình có thể kiểm tra hoặc nếu không giải quyết được thì up lên cho người xem.
Bạn có thể vào website www.giaiphapexcel.com để tìm hiểu thêm!
 
B

buidinh

Guest
6/2/07
6
0
0
40
Hp
=IF(ISNA(INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,5,2),G21),FL!$J:$J,0),0)),INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,8,2),G21),FL!$J:$J,0),0),INDEX(FL!$C:$C,MATCH(CONCATENATE(MID($A$1,5,2),G21),FL!$J:$J,0),0))
:wall:

Có cách nào rút gọn công thức này không các bác ! Nó dài quá.
Em thử cho IF vào trong, để check MID nhưng .... nó không hiểu. Pó tay, nhờ các bác giúp cho ! :1luvu:
 
N

Ng Ha Anh Tuan

Guest
2/8/06
76
0
0
TP HCM
=IF(and(ISNA(MATCH(MID($A$1 ,5,2)&G21),ISNA(MATCH(MID($A$1 ,8,2)&G21)),"-",IF(ISNA(MATCH(MID($A$1 ,5,2)&G21),INDEX(FL!$C:$C,MATCH(MID($A$1,8,2)&G21,FL!$J:$J,0),0),INDEX( FL!$C:$C,MATCH(MID($A$1,5,2)&G21,FL!$ J:$J,0),0)))
kiểm tra lại các dấu "()" ie nếu isna DK1 và DK2 thì lấy "-", còn không nếu Isna DK1, index(dk2),index(dk1)
Có thể đặt tên:
vung1=FL!$C:$C
vung2=FL!$J:$J
Nếu G21 là $G$21 (???) thì đặt
dk1=MATCH(MID($A$1 ,5,2)&G21)) ???G21
Dk2=MATCH(MID($A$1 ,8,2)&G21)) ???G21
Bạn tự rút gọn nhé
 
Sửa lần cuối:
hieu1563

hieu1563

Guest
buidinh nói:
Mình giải 1 fie Excel gặp một vấn đề sau :
Có 2 công thức sau :





Mình muốn thực hiện nó trên 1 dòng, và chỉ muốn nó thực hiện 1 trong 2 phép tính này khi 1 trong 2 phép tính này đúng. (kô bao giờ 2 phép tính này cùng đúng)
Có cách nào không các bác !
_________________________________________________

Vấn đề thứ 2 :

Khi phép tính được giải, với 1 số "ô trống" kô có giá trị (kô đúng) nó trả về giá trị N/A.
Có cách nào cho nó không trả về N/A mà trả về 1 giá trị bất kì nào đó như "-" hoặc là để trống nếu không thực hiện được không?

Thank ALL
Mình muốn giới thiệu với bạn hàm CHOOSE
Tạm thời biến đổi hai hàm của bạn thành 2 Công Việc :

CV1=INDEX(FL!$C:$C;MATCH(MID($A$1;5;2)&G21;FL!$J:$J;0);0)
CV2=INDEX(FL!$C:$C;MATCH(MID($A$1;8;2)&G21;FL!$J:$J;0);0)

=CHOOSE((1+2*ISERROR(ĐK_CV1)+3*ISERROR(ĐK_CV2)-2);CV1;CV2;"";"Sai cả hai")

=CHOOSE((1+2*ISERROR(MATCH(MID($A$1;5;2)&G21;FL!$J:$J;0))+3*ISERROR(MATCH(MID($A$1;8;2))-2);"CV1";"CV2";"";"Sai cả hai")

Có thể công thức hơi dài. Bạn chịu khó nhé.



Còn để không còn dấu hiệu N/A đáng ghét; bạn có thể tham khảo :
http://www.giaiphapexcel.com/forum/showthread.php?t=1419

Thân
 
Sửa lần cuối:

Xem nhiều

Webketoan Zalo OA