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

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

buidinh

Thành viên sơ cấp
6/2/07
6
0
0
34
Hp
#1
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
 
adam_tran

adam_tran

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#2
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

Thành viên sơ cấp
6/2/07
6
0
0
34
Hp
#3
=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

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#4
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

Thành viên sơ cấp
6/2/07
6
0
0
34
Hp
#5
=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

Thành viên sơ cấp
2/8/06
76
0
0
TP HCM
#6
=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

Thành viên sơ cấp
#7
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:

BQT trực tuyến

  • MINA
    MINA
    TV Ban Quản Trị / Admin

Thành viên trực tuyến

  • buiminhdinh
  • LTMP
  • Joni Trần
  • laithinhai
  • licogi161
  • Stupidgirl1002
  • phan hau hd
  • hardes
  • Vodka_8x
  • MINA
  • vinalinkseo
  • Hiềnhiềnttud
  • NgocYen0211
  • katy8287
  • MICA LIVINA
  • donganhvantai
  • Anhcoi1234
  • Huyền Mia

Xem nhiều