So sánh nhiều giá trị trong hàm IFS

Liên hệ QC

Nguyễn Thái Hồng

Thành viên mới
Tham gia
2/2/18
Bài viết
2
Được thích
0
Giới tính
Nam
Các bạn xem giúp mình xem có giải pháp nào khác trong việc xử lý trường hợp này không nhé.
Mình có 5 cột mã code và cần tìm ra mã SP dựa theo mã code ở cột thứ 6(sheet 2)
Nếu chỉ có 1 cột mã code thì chỉ cẩn vloolup theo dữ liệu chính ở sheet 1 sang là được.
Nhưng mình muốn tìm mã SP tại cột f dựa trên mã code tại 5 cột abcde, trong các cột abcde chỉ có 1 cột bất kỳ có dữ liệu chuẩn so sánh với sheet 1.
Mình thử hàm IFS nhưng nếu chỉ có 1 điều kiện tìm thì sẽ được, những chuyển sang đk 1 tại cột a, đk 2 tại cột b thì lại không được, các bạn có phương pháp xử lý hàm này không hay có hàm nào khác chỉ giáo mình với ạ.
File mình đính kèm dưới nhé.
 

File đính kèm

  • Hàm IFS.xls
    21 KB · Đọc: 19
Các bạn xem giúp mình xem có giải pháp nào khác trong việc xử lý trường hợp này không nhé.
Mình có 5 cột mã code và cần tìm ra mã SP dựa theo mã code ở cột thứ 6(sheet 2)
Nếu chỉ có 1 cột mã code thì chỉ cẩn vloolup theo dữ liệu chính ở sheet 1 sang là được.
Nhưng mình muốn tìm mã SP tại cột f dựa trên mã code tại 5 cột abcde, trong các cột abcde chỉ có 1 cột bất kỳ có dữ liệu chuẩn so sánh với sheet 1.
Mình thử hàm IFS nhưng nếu chỉ có 1 điều kiện tìm thì sẽ được, những chuyển sang đk 1 tại cột a, đk 2 tại cột b thì lại không được, các bạn có phương pháp xử lý hàm này không hay có hàm nào khác chỉ giáo mình với ạ.
File mình đính kèm dưới nhé.
Thử công thức "củ chuối" này trong khi chờ các bạn khác.
.xls làm gì có hàm IFS.
PHP:
F2 =VLOOKUP(LOOKUP(2;1/COUNTIF(Sheet1!$A$2:$A$6;Sheet2!A2:E2);A2:E2);Sheet1!$A$2:$B$6;2;0)
 
Các bạn xem giúp mình xem có giải pháp nào khác trong việc xử lý trường hợp này không nhé.
Mình có 5 cột mã code và cần tìm ra mã SP dựa theo mã code ở cột thứ 6(sheet 2)
Nếu chỉ có 1 cột mã code thì chỉ cẩn vloolup theo dữ liệu chính ở sheet 1 sang là được.
Nhưng mình muốn tìm mã SP tại cột f dựa trên mã code tại 5 cột abcde, trong các cột abcde chỉ có 1 cột bất kỳ có dữ liệu chuẩn so sánh với sheet 1.
Mình thử hàm IFS nhưng nếu chỉ có 1 điều kiện tìm thì sẽ được, những chuyển sang đk 1 tại cột a, đk 2 tại cột b thì lại không được, các bạn có phương pháp xử lý hàm này không hay có hàm nào khác chỉ giáo mình với ạ.
File mình đính kèm dưới nhé.
Bạn thử
Tại Sheet2 ô F3 = VLOOKUP(LOOKUP(2;1/($A2:$E2<>"X");$A2:$E2);Sheet1!$A$2:$B$6;2;0)
Copy paste các ô còn lại
 
Thử công thức "củ chuối" này trong khi chờ các bạn khác.
.xls làm gì có hàm IFS.
PHP:
F2 =VLOOKUP(LOOKUP(2;1/COUNTIF(Sheet1!$A$2:$A$6;Sheet2!A2:E2);A2:E2);Sheet1!$A$2:$B$6;2;0)
Em thêm công thức mảng "củ mì sùng"
Mã:
F2=LOOKUP("zzz",VLOOKUP(T(IF({1},A2:E2)),Sheet1!$A$2:$B$6,2,)&"")
Chỉ Enter, fill xuống.

Chúc anh em ngày vui "chiến thắng"
/-*+//-*+//-*+/
 

File đính kèm

  • Hàm IFS.xlsb
    10.8 KB · Đọc: 18
Lần chỉnh sửa cuối:
Em thêm công thức mảng "củ mì sùng"
Mã:
F2=LOOKUP("zzz",VLOOKUP(T(IF({1},A2:E2)),Sheet1!$A$2:$B$6,2,)&"")
Chỉ Enter, fill xuống.

Chúc anh em ngày vui "chiến thắng"
/-*+//-*+//-*+/
Anh có thể giải thích hàm T(IF()) được không Anh?\
Em có đọc về TRICK mà không hiểu gì hết cả.
Em cảm ơn Anh!
 
Anh có thể giải thích hàm T(IF()) được không Anh?
Đúng là trong củ mì có "sùng" {1}
Công thức T(IF()) dùng trong "Giá trị tìm" của H/VLOOKUP do bạn @congnt92 chia sẻ trong bài theo link.

Phát hiện thêm điều này từ bạn ấy, anh rất vui, vì từ lúc biết công thức Mảng đến lúc đó, anh đã tìm mọi cách (dùng Index, Offset, Lookup...) nhưng vẫn không thể nào đưa 1 Mảng vào "Giá trị tìm" của H/VLOOKUP(). Như em biết, mình có thể dễ dàng đưa Mảng vào các đối số Rows, Columns của các hàm H/VLOOKUP, OFFSET; Hoặc có thể đưa Mảng vào "Giá trị cần so khớp" vào hàm MATCH; Hoặc vào các điều kiện của các hàm họ Count/Sumif, nhưng với "Giá trị tìm" của hai hàm H/VLOOKUP thì đành thúc thủ.....

Sau khi được chia sẻ từ @congnt92, anh cũng làm thêm một số bước khác để thử tìm hiểu do đâu mà T(IF()) có thể làm được điều này, mà các hàm chuyên cung cấp 1 mảng như Offset, Index... lại không được, thì chỉ có thể tự nghiệm (cho riêng mình để hiểu nó), nên theo anh nghĩ rằng:
  • IF() là cấu trúc điều kiện, nó tạo Mảng theo kiểu ghép từng phần tử thỏa và không thỏa, nhưng Vùng/Mảng mình cần lấy thì không bỏ ô dữ liệu trong Vùng/Mảng nên coi như các phần tử đều thỏa điều kiện: TRUE (hay 1), Ví dụ: như bài trên có 5 cột, thì mình có thể dùng:
    • =IF(A2: E2<>"", A2: E2) hoặc
    • =IF({1,1,1,1,1}, A2: E2) hoặc có thể tóm gọn là:
    • =IF( {1} ,A2: E2)
    • Mảng {1} ở đây tuy chỉ có 1 phần tử, nhưng vì nó gán vào Mảng {} nên sẽ linh động co duỗi theo Vùng/Mảng cần lấy phía sau.
    • Có lẽ chính nhờ IF() tạo Mảng ghép từng phần tử, nên nó phù hợp với cách lấy "Giá trị Tìm" đơn cung cấp cho đối số 1 của hai hàm H/VLOOKUP
  • Thêm vào đó, chỉ đơn độc dùng IF() không thôi chưa đủ, và cũng chưa thể hiện ra toàn bộ các giá trị cần lấy của Vùng/Mảng, mà phải dùng thêm T() lồng bên ngoài IF(). Anh để ý thấy: trong một số trường hợp phải dùng thêm hai hàm N() hoặc T() (tùy theo tình trạng dạng dữ liệu mà sử dụng), mới thể hiện được toàn bộ thành phần 1 Mảng. Nó cũng tương tự như trường hợp INDEX() khi dùng chung với OFFSET(), thì lúc nào cũng phải =INDEX( T(Offset()) , ) hoặc INDEX( N(Offset()) , ).
Những chia sẻ trên chỉ do tự mình nghiệm vì anh cũng chưa có tư liệu giải thích về việc này, mà chỉ dựa vào quá trình tìm tòi "vọc hàm", mà tự rút tỉa ra thôi! cái quan trọng là nó đã trả ra kết quả mà anh mong muốn là tốt rồi, anh không quan trọng lắm về việc lý do chính xác vì đâu mà nó làm được chuyện đó! :p

Xem thêm những ví dụ công thức trong file kèm.

Chúc em ngày vui.
/-*+//-*+//-*+/
 

File đính kèm

  • GiaiThich_T-IF.xlsb
    253.4 KB · Đọc: 7
Công thức T(IF()) dùng trong "Giá trị tìm" của H/VLOOKUP do bạn @congnt92 chia sẻ trong bài theo link.

Phát hiện thêm điều này từ bạn ấy, anh rất vui, vì từ lúc biết công thức Mảng đến lúc đó, anh đã tìm mọi cách (dùng Index, Offset, Lookup...) nhưng vẫn không thể nào đưa 1 Mảng vào "Giá trị tìm" của H/VLOOKUP(). Như em biết, mình có thể dễ dàng đưa Mảng vào các đối số Rows, Columns của các hàm H/VLOOKUP, OFFSET; Hoặc có thể đưa Mảng vào "Giá trị cần so khớp" vào hàm MATCH; Hoặc vào các điều kiện của các hàm họ Count/Sumif, nhưng với "Giá trị tìm" của hai hàm H/VLOOKUP thì đành thúc thủ.....

Sau khi được chia sẻ từ @congnt92, anh cũng làm thêm một số bước khác để thử tìm hiểu do đâu mà T(IF()) có thể làm được điều này, mà các hàm chuyên cung cấp 1 mảng như Offset, Index... lại không được, thì chỉ có thể tự nghiệm (cho riêng mình để hiểu nó), nên theo anh nghĩ rằng:
  • IF() là cấu trúc điều kiện, nó tạo Mảng theo kiểu ghép từng phần tử thỏa và không thỏa, nhưng Vùng/Mảng mình cần lấy thì không bỏ ô dữ liệu trong Vùng/Mảng nên coi như các phần tử đều thỏa điều kiện: TRUE (hay 1), Ví dụ: như bài trên có 5 cột, thì mình có thể dùng:
    • =IF(A2: E2<>"", A2: E2) hoặc
    • =IF({1,1,1,1,1}, A2: E2) hoặc có thể tóm gọn là:
    • =IF( {1} ,A2: E2)
    • Mảng {1} ở đây tuy chỉ có 1 phần tử, nhưng vì nó gán vào Mảng {} nên sẽ linh động co duỗi theo Vùng/Mảng cần lấy phía sau.
    • Có lẽ chính nhờ IF() tạo Mảng ghép từng phần tử, nên nó phù hợp với cách lấy "Giá trị Tìm" đơn cung cấp cho đối số 1 của hai hàm H/VLOOKUP
  • Thêm vào đó, chỉ đơn độc dùng IF() không thôi chưa đủ, và cũng chưa thể hiện ra toàn bộ các giá trị cần lấy của Vùng/Mảng, mà phải dùng thêm T() lồng bên ngoài IF(). Anh để ý thấy: trong một số trường hợp phải dùng thêm hai hàm N() hoặc T() (tùy theo tình trạng dạng dữ liệu mà sử dụng), mới thể hiện được toàn bộ thành phần 1 Mảng. Nó cũng tương tự như trường hợp INDEX() khi dùng chung với OFFSET(), thì lúc nào cũng phải =INDEX( T(Offset()) , ) hoặc INDEX( N(Offset()) , ).
Những chia sẻ trên chỉ do tự mình nghiệm vì anh cũng chưa có tư liệu giải thích về việc này, mà chỉ dựa vào quá trình tìm tòi "vọc hàm", mà tự rút tỉa ra thôi! cái quan trọng là nó đã trả ra kết quả mà anh mong muốn là tốt rồi, anh không quan trọng lắm về việc lý do chính xác vì đâu mà nó làm được chuyện đó! :p

Xem thêm những ví dụ công thức trong file kèm.

Chúc em ngày vui.
/-*+//-*+//-*+/
Nhiều sự phức tạp quá.
 
Có thể xài UDF như sau:
PHP:
Function TM(Rng As Range)
Dim Cls As Range:              Dim Không As Boolean
For Each Cls In Rng
    If UCase$(Cls.Value) <> "X" Then
        Set TM = Cls: Exit Function
    End If
Next Cls
If Not Không Then
    TM = 0
End If
End Function

/(hi đó tại [F8] ta áp công thức =IF(tm(A8:E8)=0,"Goto GPE.COM",VLOOKUP(tm(A8:E8),Sheet1!A:B,2,0))


Anh nhà mình gần đây viết bài rất dài Anh ạ. Còn dẫn chứng đầy đủ. Cái này người ta gọi là dấu hiệu của tuổi già đó
Đó là dấu hiệu của 'Tình thương mến thương' thì đúng hơn;
Khi ghét thì đưa file lên & viết: "Xem file"
Hay giận quá thì ghi 'Nè' với file kèm theo là xong 1 bài.
 
Lần chỉnh sửa cuối:
Đó là dấu hiệu của 'Tình thương mến thương' thì đúng hơn;
Khi ghét thì đưa file lên & viết: "Xem file"
Hay giận quá thì ghi 'Nè' với file kèm theo là xong 1 bài.
Còn hỏi mà đưa hình thì chỉ nhận được kết quả bằng hình. Vậy chủ Topic thắc mắc thì sao?

Vì chủ Topic không đính kèm File thì lấy cái gì để thao tác, kiểm tra nên đưa hình là chắc ăn nhất, lỡ kết quả có sai thì không ai rảnh để nhập liêu và kiểm tra thử để biết.
 
I em xin chân thành cảm ơn các bác đã góp sức giúp ạ, e đã làm được và vẫn chưa hiểu rõ, chỉ coppy công thức và thay đổi mảng dò tìm.
Đúng là kiến thức mênh mông cắm đầu vào chổng mông ra vẫn chưa hiểu rõ.
Cố gắng tìm hiểu sau vậy, hiu hiu
 
Web KT
Back
Top Bottom