Các câu hỏi về hàm dò tìm dữ liệu (Lookup, Vlookup, Hlookup...)

Liên hệ QC

Closed poll

  • 1

    Votes: 1 100.0%
  • 2

    Votes: 0 0.0%

  • Total voters
    1
  • Poll closed .
Status
Không mở trả lời sau này.
hoặc bạn sử dụng thêm 1 hàm logic nữa để kiểm tra vi dụ như sử dụng câu lệnh sau
=IF(COUNT(VLOOKUP(giá trị kiểm tra,vùng dò kiểm tra,vùng lấy giá trị)>=1),VLOOKUP(giá trị kiểm tra,vùng dò kiểm tra,vùng lấy giá trị),0)
Như vậy nếu gặp giá trị chưa có thì kết quả luôn bằng 0 và không ảnh hưởng đến phép cộng của bạn.
 
Theo minh nhu ham sau cung duoc= IF(ISBLANK(giá trị kiểm tra);"";ROUND(VLOOKUP(giá trị kiểm tra;vùng kiểm tra;hàng kiẻm tra;0);0))
 
Trong tất cả các cách các bạn bàn luận, đều không đúng.
=IF(COUNT(VLOOKUP(E5,B5:C7,2,0))>=1,VLOOKUP(E5,B5:C7,2,0),0)
Hàm này chỉ đúng khi giá trị dò tìm cho ra kết quả số. Trong thí dụ trên,giá trị E5 khi dò tìm trả về kết quả là số tại cột C của mảng B5:C7. Nếu cột C có các kết quả là Text, sẽ trả về số 0

Trần Văn Bình đã viết:
Theo minh nhu ham sau cung duoc= IF(ISBLANK(giá trị kiểm tra);"";ROUND(VLOOKUP(giá trị kiểm tra;vùng kiểm tra;hàng kiẻm tra;0);0))

Tại trường hợp này, nếu E5 là trống, không có giá trị, thì kết quả là số 0. Nhưng nếu E5 có giá trị, mà giá trị này không có trong cột B của mảng B5:C7, thì kết quả vẫn là lỗi #N/A.

Do đó, chỉ có 2 hàm được sử dụng khử lỗi #N/A là hàm ISNA() và hàm ISERROR() mà thôi
 
có 2 hàm được sử dụng khử lỗi #N/A là hàm ISNA() và hàm ISERROR()
(òn hàm =IF(TYPE(VLOOKUP(...;...;...;...))= 16; "" ; VLOOKUP(...;...;...;...)) có thể xài được?!?
(ác bạn bàn thêm xem nên sao, nếu hàm VLOOKUP() trả về lỗi thì nên thể hiện số 0 hay nên là ""; Mình e rằng ngay bản thân hàm VLOOKUP() cũng trả về giá trị 0 thì sẽ sinh ra việc ngộ nhận hay không?!
 
Lần chỉnh sửa cuối:
handung107 đã viết:
Trong tất cả các cách các bạn bàn luận, đều không đúng.

Hàm này chỉ đúng khi giá trị dò tìm cho ra kết quả số. Trong thí dụ trên,giá trị E5 khi dò tìm trả về kết quả là số tại cột C của mảng B5:C7. Nếu cột C có các kết quả là Text, sẽ trả về số 0



Tại trường hợp này, nếu E5 là trống, không có giá trị, thì kết quả là số 0. Nhưng nếu E5 có giá trị, mà giá trị này không có trong cột B của mảng B5:C7, thì kết quả vẫn là lỗi #N/A.

Do đó, chỉ có 2 hàm được sử dụng khử lỗi #N/A là hàm ISNA() và hàm ISERROR() mà thôi
Một bài toán luôn có nhiều cách giải không nhất thiết phải luôn theo 1 cách của thầy giáo?? Trong yêu cầu giải quyết không biết bạn đọc có kỹ không chứ người yêu cầu nêu vấn đề nếu giá trị không có làm xuất hiện lỗi #N/A thì không tính tổng được. Vậy nên không thể nói là bàn luận không đúng được.
 
Đúng, bạn nói rất đúng, nhưng khi nói về khử lỗi #N/A,nếu bạn hướng dẫn cho người mới bắt đầu, thì hàm ISNA() là tổng quát nhất và phù hợp nhất cho mọi trường hợp. Còn mọi người tự khám phá thêm là cách của riêng mỗi người. Dù sao, cách của bạn cũng là một ý kiến cho các bạn khác tham khảo thêm
 
Thanks các bạn. Nhung công thức của mình đã dài rồi mà giờ lai dung hàm IF nữa thì báo lỗi, Ý mình nói là dữ liệu trong vùng tìm thiếu chứ không phải cột tìm thiếu: VD

Vlookup(A1,C2:E10,2,0) . Giá trị A1 ko có trong khối cần tìm C2:E10 nên báo lỗi #N/A --> ko tính tổng được.

Sau đây là công thức thực tế của mình:
=IF($F$4="MIEN BAC",VLOOKUP(A6,MIENBAC,2,0),
IF($F$4="MIEN TRUNG",VLOOKUP(A6,MIENTRUNG,2,0),
IF($F$4="MIEN DONG",VLOOKUP(A6,MIENDONG,2,0),
IF($F$4="HCM",VLOOKUP(A6,HCM,2,0),
IF($F$4="MEKONG 1",VLOOKUP(A6,MK1,2,0),
IF($F$4="MEKONG 2",VLOOKUP(A6,MK2,2,0),0))))))

"MIEN BAC" là text cần so sánh, MIENBAC là khối dữ liệu cần tìm
mình
 
Thanks các bạn. Nhung công thức của mình đã dài rồi mà giờ lai dung hàm IF nữa thì báo lỗi, Ý mình nói là dữ liệu trong vùng tìm thiếu chứ không phải cột tìm thiếu: VD

Vlookup(A1,C2:E10,2,0) . Giá trị A1 ko có trong khối cần tìm C2:E10 nên báo lỗi #N/A --> ko tính tổng được.

Sau đây là công thức thực tế của mình:
=IF($F$4="MIEN BAC",VLOOKUP(A6,MIENBAC,2,0),
IF($F$4="MIEN TRUNG",VLOOKUP(A6,MIENTRUNG,2,0),
IF($F$4="MIEN DONG",VLOOKUP(A6,MIENDONG,2,0),
IF($F$4="HCM",VLOOKUP(A6,HCM,2,0),
IF($F$4="MEKONG 1",VLOOKUP(A6,MK1,2,0),
IF($F$4="MEKONG 2",VLOOKUP(A6,MK2,2,0),0))))))

"MIEN BAC" là text cần so sánh, MIENBAC là khối dữ liệu cần tìm. Giả sử mình qui định cả khối trên là A thì mình đã làm như sau:
If(A>0,A,0) thì nó báo lỗi, ko hiểu tại sao???
 
Mình không nghĩ là bạn cần thiết phải làm một công thức dài như vậy. Toàn bộ các khối dữ liệu cần tìm kiếm bạn có thể cho vào một khối (VD MaVung). Nhu vậy việc quan trọng ở đây là đặt mã cho phù hợp để tránh trùng thôi. VD Miền Bắc bắt đầu từ MB, Miền nam bắt đầu từ MN. . . .
Khi đó công thức của bạn chỉ còn là
=VLOOKUP(A6,
MaVung,2,0).

Có thể khi công thức không tìm thấy giá trị thì nó sẽ báo lỗi.

Vậy thì bạn nên sử dụng các PP sau để tránh lỗi :

- Tại ô A6 dùng Validation với
List = MaVung để đảm bảo rằng tất các các giá trị của A6 đều lấy từ MaVung
- Dùng PP : Nếu hàm bị lỗi thì trả về giá trị nào đó :
=if(iserror(VLOOKUP(A6,MaVung,2,0))=false,VLOOKUP(A6,MaVung,2,0),"Khong co gi tri nay") : Nếu tìm thấy thì sẽ tiến hành bình thường; nếu bị lỗi thì sẽ trả về chuỗi ký tự thông báo trên.
=if(isNA(VLOOKUP(A6,MaVung,2,0))=false,VLOOKUP(A6,MaVung,2,0),"Khong co gi tri nay")
Nếu tìm thấy thì sẽ tiến hành bình thường; nếu bị l
ỗi (không tìm thấy)thì sẽ trả về chuỗi ký tự thông báo trên.

Hai trường hợp bị lỗi có khác nhau :
Vì hàm VLOOKUP bị lỗi ở 3 trường hợp :
1. Số cột trong công thức <1 : trả về #VALUE!
2. Số cột trong công thức > số cột bảng tham chiếu : trả về #REF!
3. Khi không tìm thấy giá trị thỏa mãn : trả về #N/A
Nếu dùng iserror thì loại trừ cả 3 trường hợp lỗi. Còn nếu dùng IsNA thì chỉ loại được trường hợp thứ 3.
. . . . . . . . . .
Mong bạn suy xét kỹ.

Còn công thức của bạn :
if(A>0;A;)) -->> if(iserror(A>0)=false;A;0)

Thân!
 
Lần chỉnh sửa cuối:
Thanks nhieu nhé
đúng là mình còn yếu quá
 
A vậy vấn đề lại khác, bạn thử tìm hiểu theo cách sau:
Sử dụng hàm Vlookup lồng với hàm Indirect trong câu lệnh chính để dò tìm.
Sử dụng hàm ISNA để khử lỗi #N/A (đúng bài bản rồi đấy bác handung107)
Các giá trị để dò tìm đưa vào 1 bảng riêng và bạn nhớ đặt tên để sau này dễ sử dụng (MIEN BAC, MIEN TRUNG, MIEN DONG...)
Các vùng để lấy giá trị đưa vào một bảng riêng và đặt tên luôn nha.
Như vậy câu lệnh chính dò giá trị sẽ như sau:
VLOOKUP(A6,INDIRECT(VLOOKUP(F4,vungdo,2,0)),2,FALSE)
lồng với hàm bắt lỗi ISNA sẽ trở thành hoàn chỉnh như sau:
IF(ISNA(VLOOKUP(A6,INDIRECT(VLOOKUP(F4,vungdo,2,0)),2,FALSE)),0,VLOOKUP(A6,INDIRECT(VLOOKUP(F4,vungdo,2,0)),2,FALSE))
với vungdo là tên bảng chứa các text cần do và các tên bảng khối dữ liệu cần tìm.
như vậy bạn thấy đấy câu lệnh được rút ngắn tối đa và giá trị kiểm tra của bạn là tuỳ thích (muốn bao nhiêu cũng được) chứ không giới hạn 7 như khi bạn sử dụng hàm IF để dò giá trị.
Mình muốn upload lên file Excel có ví dụ nhưng không biết làm cách nào. Nếu bạn cần thì mình sẽ email cho bạn
 
MrHieu đã viết:
Mình không nghĩ là bạn cần thiết phải làm một công thức dài như vậy. Toàn bộ các khối dữ liệu cần tìm kiếm bạn có thể cho vào một khối (VD MaVung). Nhu vậy việc quan trọng ở đây là đặt mã cho phù hợp để tránh trùng thôi. VD Miền Bắc bắt đầu từ MB, Miền nam bắt đầu từ MN. . . .
Khi đó công thức của bạn chỉ còn là
=VLOOKUP(A6,
MaVung,2,0).

Có thể khi công thức không tìm thấy giá trị thì nó sẽ báo lỗi.

Vậy thì bạn nên sử dụng các PP sau để tránh lỗi :

- Tại ô A6 dùng Validation với
List = MaVung để đảm bảo rằng tất các các giá trị của A6 đều lấy từ MaVung
- Dùng PP : Nếu hàm bị lỗi thì trả về giá trị nào đó :
=if(iserror(VLOOKUP(A6,MaVung,2,0))=false,VLOOKUP(A6,MaVung,2,0),"Khong co gi tri nay") : Nếu tìm thấy thì sẽ tiến hành bình thường; nếu bị lỗi thì sẽ trả về chuỗi ký tự thông báo trên.
=if(isNA(VLOOKUP(A6,MaVung,2,0))=false,VLOOKUP(A6,MaVung,2,0),"Khong co gi tri nay")
Nếu tìm thấy thì sẽ tiến hành bình thường; nếu bị l
ỗi (không tìm thấy)thì sẽ trả về chuỗi ký tự thông báo trên.

Hai trường hợp bị lỗi có khác nhau :
Vì hàm VLOOKUP bị lỗi ở 3 trường hợp :
1. Số cột trong công thức <1 : trả về #VALUE!
2. Số cột trong công thức > số cột bảng tham chiếu : trả về #REF!
3. Khi không tìm thấy giá trị thỏa mãn : trả về #N/A
Nếu dùng iserror thì loại trừ cả 3 trường hợp lỗi. Còn nếu dùng IsNA thì chỉ loại được trường hợp thứ 3.
. . . . . . . . . .
Mong bạn suy xét kỹ.

Còn công thức của bạn :
if(A>0;A;)) -->> if(iserror(A>0)=false;A;0)

Thân!
theo như mình thì bạn đã bỏ sót 1 giá trị kiểm tra vì như yêu cầu thì kiểm tra giá trị tên vùng, nếu đúng giá trị tên vùng thì lấy giá trị A6 dò tìm trong vùng tên vừa tìm được. Như vậy ở đây bắt buộc dò tìm 2 lần.
Bạn thử kiểm tra xem.
Thân!
 
Morning!

Mình rất cám ơn vì sự giúp đỡ nhiệt tình của các bạn.
Các bạn cho mình hỏi thêm: có cách nào thực hện công việc (CV) sau ko nhé.
=nếu A1 có mặt trong vùng B1:E10 thì thực hiện CV1, ngược lại thì thực hiện CV2.
A1 là text (VD: tên tỉnh...) có trong danh sách list tỉnh của khối B1:E10.
Có hàm nào để so sánh như vậy ko hén.

Thanks&&&%$R
 
Bạn thử dùng hàm sau:
Mã:
=IF(OR(NOT(ISERROR(MATCH(A1,B1:B10,0))),NOT(ISERROR(MATCH(A1,C1:C10,0)))),"CV1","CV2")
 
vuphuocha đã viết:
theo như mình thì bạn đã bỏ sót 1 giá trị kiểm tra vì như yêu cầu thì kiểm tra giá trị tên vùng, nếu đúng giá trị tên vùng thì lấy giá trị A6 dò tìm trong vùng tên vừa tìm được. Như vậy ở đây bắt buộc dò tìm 2 lần.
Bạn thử kiểm tra xem.
Thân!

Đề bài của bạn ngovietct như sau :
Nếu F4 = ……. Thì tìm kiếm giá trị tương ứng của ô A6 trong vùng dò. . . .

Do vùng dò của bạn ngovietct không đồng nhất (MIENBAC; MIẺNTRUNG; MIENNAM. . . ) nên bạn ấy phải sử dụng rất nhiều hàm if (tương ứng với số vùng dò)
Do đó mình đề nghị bạn ngovietct gộp tất cả các vùng dò đó vào một vùng (VD : MAVUNG), khi đó mới áp dụng những công thức như trên mình nêu ra.
Vì mình nghĩ rằng giá trị ở F4 bạn ngovietct lập ra nhằm làm cho hàm if , nghĩa là giá trị A6 lúc nào cũng tồn tại để dò (nếu không có là do chưa cập nhật kịp) . Do đó khi đồng nhất các vùng dò lại thì cột F lại không cần thiết nữa, vì thế có thể xóa cột F đi.

Có thể không đúng ý bạn ngovietct !?!
Thân!
 
ngovietct đã viết:
Morning!

Mình rất cám ơn vì sự giúp đỡ nhiệt tình của các bạn.
Các bạn cho mình hỏi thêm: có cách nào thực hện công việc (CV) sau ko nhé.
=nếu A1 có mặt trong vùng B1:E10 thì thực hiện CV1, ngược lại thì thực hiện CV2.
A1 là text (VD: tên tỉnh...) có trong danh sách list tỉnh của khối B1:E10.
Có hàm nào để so sánh như vậy ko hén.

Thanks&&&%$R


Bạn thử xem nhé

If(countif(B1:E10;A1)>0;CV1;CV2)
Thân!
 
Chào MrHieu
Mình vẫn bảo lưu ý kiến củ của mình. Do yêu cầu của ngovietct là lấy giá trị ở A6 dò tìm trong vùng được tìm ra tại giá trị F4. Nên lời giải của bạn là thiếu. Vì theo như mình nhận định, tại mỗi vùng dò ra sau khi kiểm tra F4 đều có các giá trị khác nhau mặc dầu giá trị muốn tìm tại A6 là không đổi.
Vì nếu các giá trị sau khi kiểm tra tại F4 bằng nhau thì chẳng việc gì phải phân ra làm nhiều vùng để kiểm tra chi cho mệt và lúc đó chỉ cần lấy giá trị A6 đi dò trong 1 vùng (vùng này sẽ bao gồm tất cả các giá trị của các vùng còn lại) là được.
Bàn luận lý thuyết thì dài dòng, bạn cứ thử làm ví dụ đi rồi sẽ sáng tỏ liền.
Vd:(mình đang lấy số vùng <7 nhưng không được sử dụng hàm if lồng như yêu cầu của bạn ngovietct)
- có 3 vùng MB,MT,MN với MB có các giá trị AA=1,AB=2,AC=3; MT có các giá trị AA=2,AB=4,AC=6; MN có các giá trị AA=8,AB=16,AC=64.
Giá trị cần tìm là AA với yêu cầu tên vùng là ngẫu nhiên (sửa lại cho đúng ý : chọn trong các giá trị MB,MT,MN...)(giống như yêu cầu của ngovietct).
Vậy thì lời giải của bạn có áp dụng vào đây được không?
Thân chào bạn.
 
Lần chỉnh sửa cuối:
vuphuocha đã viết:
Chào MrHieu
Mình vẫn bảo lưu ý kiến củ của mình. Do yêu cầu của ngovietct là lấy giá trị ở A6 dò tìm trong vùng được tìm ra tại giá trị F4. Nên lời giải của bạn là thiếu. Vì theo như mình nhận định, tại mỗi vùng dò ra sau khi kiểm tra F4 đều có các giá trị khác nhau mặc dầu giá trị muốn tìm tại A6 là không đổi.
Vì nếu các giá trị sau khi kiểm tra tại F4 bằng nhau thì chẳng việc gì phải phân ra làm nhiều vùng để kiểm tra chi cho mệt và lúc đó chỉ cần lấy giá trị A6 đi dò trong 1 vùng (vùng này sẽ bao gồm tất cả các giá trị của các vùng còn lại) là được.
Bàn luận lý thuyết thì dài dòng, bạn cứ thử làm ví dụ đi rồi sẽ sáng tỏ liền.
Vd:(mình đang lấy số vùng <7 nhưng không được sử dụng hàm if lồng như yêu cầu của bạn ngovietct)
- có 3 vùng MB,MT,MN với MB có các giá trị AA=1,AB=2,AC=3; MT có các giá trị AA=2,AB=4,AC=6; MN có các giá trị AA=8,AB=16,AC=64.
Giá trị cần tìm là AA với yêu cầu tên vùng là ngẫu nhiên (giống như yêu cầu của ngovietct).
Vậy thì lời giải của bạn có áp dụng vào đây được không?
Thân chào bạn.

Thứ nhất tên vùng không ngẫu nhiên mà phải là : Hoặc MN; hoặc MB; hoặc . . . Tức là tại 1 ô thì hoàn toàn xác định
Thứ hai : Như mình đã nói ở trên :
Toàn bộ các khối dữ liệu cần tìm kiếm bạn có thể cho vào một khối (VD MaVung). Nhu vậy việc quan trọng ở đây là đặt mã cho phù hợp để tránh trùng thôi. VD Miền Bắc bắt đầu từ MB, Miền nam bắt đầu từ MN. . . .

Như vậy các mã sẽ biến thành
Mã………Giá Trị
MBAA….…1
MBAB…….2
MBAC…….3
MTAA….…2
MTAB…….4
MTAC…….6
MNAA….…8
MNAB…….16
MNAC…….64

Khi F4 = MienNam; A6 = AA
Thay vì phải lập công thức dài như vậy thì nếu làm theo cách của mình thì khi đó

A6=MNAA
Khi đó công thức sẽ là :
=if(iserror(VLOOKUP(A6,MaVung,2,0))=false,VLOOKUP( A6,MaVung,2,0),"Khong co gi tri nay") = 8.

Như thế ngắn gọn hơn nhiều.

Rất khó để nói rằng mình là đúng hoàn toàn, mình chỉ đưa ra những trường hợp để bạn ngovietct lựa chọn. Bởi thực ra file của bạn ngovietct như thế nào thì chưa biết, chỉ có mấy dòng thông tin chung nên việc hiểu sai đề là bình thường.
Rất cảm ơn bạn.
Thân!
 
MrHieu đã viết:
Thứ nhất tên vùng không ngẫu nhiên mà phải là : Hoặc MN; hoặc MB; hoặc . . . Tức là tại 1 ô thì hoàn toàn xác định
Thứ hai : Như mình đã nói ở trên :
Toàn bộ các khối dữ liệu cần tìm kiếm bạn có thể cho vào một khối (VD MaVung). Nhu vậy việc quan trọng ở đây là đặt mã cho phù hợp để tránh trùng thôi. VD Miền Bắc bắt đầu từ MB, Miền nam bắt đầu từ MN. . . .

Như vậy các mã sẽ biến thành
Mã………Giá Trị
MBAA….…1
MBAB…….2
MBAC…….3
MTAA….…2
MTAB…….4
MTAC…….6
MNAA….…8
MNAB…….16
MNAC…….64

Khi F4 = MienNam; A6 = AA
Thay vì phải lập công thức dài như vậy thì nếu làm theo cách của mình thì khi đó

A6=MNAA
Khi đó công thức sẽ là :
=if(iserror(VLOOKUP(A6,MaVung,2,0))=false,VLOOKUP( A6,MaVung,2,0),"Khong co gi tri nay") = 8.

Như thế ngắn gọn hơn nhiều.

Rất khó để nói rằng mình là đúng hoàn toàn, mình chỉ đưa ra những trường hợp để bạn ngovietct lựa chọn. Bởi thực ra file của bạn ngovietct như thế nào thì chưa biết, chỉ có mấy dòng thông tin chung nên việc hiểu sai đề là bình thường.
Rất cảm ơn bạn.
Thân!
Tôi đồng ý với điều chỉnh của bạn về điều thứ nhất. Tôi phải nói rõ nghĩa là tên vùng được chọn ngẫu nhiên từ những tên vùng có sãn.
Tiếp đến phải phân tích kỹ hơn với bạn về đề tài này vì những lý do sau:
1. Giá trị tại ô F4 là một giá trị bất kỳ (được chọn từ các tên vùng hoặc là một giá trị mới).
2. Giá trị tại ô A6 cũng là một giá trị bất kỳ (nhưng lại là giá trị con của các tập hợp tên vùng)
3. Vậy nên không thể đặt tên các mã như bạn thực hiện được (vì ở đây ngovietct đang thực hiện phép kiểm tra chéo để tìm giá trị thích hợp) nhưng bạn lại mặc nhiên qui định thành phép kiểm tra 1 chiều. Và việc gán mã như bạn tại ô A6 là một việc biết trước giá trị tại ô F4. Như vậy chỉ sử dụng cho 1 trường hợp cụ thể mà không mang tính tổng quát cho câu lệnh.
4. Giả sử các vùng có các giá trị từ A1...An (n<=1000) nhận các giá trị x1...xn và có khoảng từ m vùng trở lên không lẽ bạn cũng gán mã như vậy??. Điều này không thực tế trong cuộc sống.
Tóm lại theo tôi bạn vô tỉnh chuyển các giá trị tại các ô F4 và A6 từ các giá trị chưa biết sang các giá trị biết trước để thực hiện câu lệnh cho giá trị này và như vậy mỗi khi giá trị tại ô F4 thay đổi bạn cũng phải thay đổi câu lệnh cho việc dò tìm giá trị A6! Liệu như vậy có nên chăng.
Thân chào bạn.
 
vuphuocha đã viết:
Tôi đồng ý với điều chỉnh của bạn về điều thứ nhất. Tôi phải nói rõ nghĩa là tên vùng được chọn ngẫu nhiên từ những tên vùng có sãn.
Tiếp đến phải phân tích kỹ hơn với bạn về đề tài này vì những lý do sau:
1. Giá trị tại ô F4 là một giá trị bất kỳ (được chọn từ các tên vùng hoặc là một giá trị mới).
2. Giá trị tại ô A6 cũng là một giá trị bất kỳ (nhưng lại là giá trị con của các tập hợp tên vùng)
3. Vậy nên không thể đặt tên các mã như bạn thực hiện được (vì ở đây ngovietct đang thực hiện phép kiểm tra chéo để tìm giá trị thích hợp) nhưng bạn lại mặc nhiên qui định thành phép kiểm tra 1 chiều. Và việc gán mã như bạn tại ô A6 là một việc biết trước giá trị tại ô F4. Như vậy chỉ sử dụng cho 1 trường hợp cụ thể mà không mang tính tổng quát cho câu lệnh.
4. Giả sử các vùng có các giá trị từ A1...An (n<=1000) nhận các giá trị x1...xn và có khoảng từ m vùng trở lên không lẽ bạn cũng gán mã như vậy??. Điều này không thực tế trong cuộc sống.
Tóm lại theo tôi bạn vô tỉnh chuyển các giá trị tại các ô F4 và A6 từ các giá trị chưa biết sang các giá trị biết trước để thực hiện câu lệnh cho giá trị này và như vậy mỗi khi giá trị tại ô F4 thay đổi bạn cũng phải thay đổi câu lệnh cho việc dò tìm giá trị A6! Liệu như vậy có nên chăng.
Thân chào bạn.

Mình nghĩ rằng cả hai chúng ta càng ngày càng đi xa vấn đề mà bạn ngovietct đặt ra. Cái mà mình đưa ra cho bạn ngovietct là một cái nhìn mới về phương pháp sử dụng hàm VLOOKUP, nhưng chúng ta lại ngồi tranh luận với nhau về việc có (nên) tồn tại hay không giá trị ô F4. Nếu tồn tại thì cứ để như thế dò hay là tái cấu trúc lại bảng mã nguồn.

VD :
Có 3 vùng : MienNam; MienBac; MienTrung
Các tập con :
F4…………………A6…………………….Mã mới (VD)
MienNam: ………1;2;3;A;B………………MN(1;2;3;A;B) – 2 ký tự đầu tiên là MN
MienBac: ………..1;2;3;C;D………………MB(1;2;3;C;D)
MienTrung:………1;2;3;E;F………………MT(1;2;3;E;F)

Như vậy ta phải có 4 bảng mã nguồn để tham chiếu gồm 1 bảng MaVung; + 3 bảng tập con tương ứng với các mã vùng.
Khi nhập dữ liệu:
Khi F4 = MienNam thì tại ô A6 sẽ nhận các giá trị :1;2;3;A;B
Khi F4 = MienBac thì tại ô A6 sẽ nhận các giá trị :1;2;3;C;D
Khi F4 = MienTrung thì tại ô A6 sẽ nhận các giá trị :1;2;3;E;F

Như vậy các giá trị tại ô F4 và A6 là các giá trị đã biết trước (có biết thì ta mới nhập được chứ). VD như ta muốn lấy giá trị 2 của vùng MienNam -> Chọn : F4 = MienNam ->A6 = 2
Nhưng nếu theo bảng mã mới thì chỉ cần : A6 = MN2

Giả sử bạn có 100 vùng, mình không nghĩ rằng bạn sẽ tạo ra 100 bảng mã nguồn và 100 name tương ứng. Nếu thế thì không có gì để nói nữa. Trong khi đó bạn chỉ cần tạo ra 1 bảng mã duy nhất là được trong đó cần chú ý đến việc đặt mã.


Nếu vẫn cứ phải làm như bạn ngovietct và cần đúng câu cú như trên thì ta chỉ cần sử dụng thêm hàm INDIRECT là xong và sửa lại name MK1 => MEKONG 1; MK2 => MEKONG 2

=if(and(ISERROR(VLOOKUP(A6;INDIRECT($F$4);2;0))=FALSE;OR($F$4="MIEN BAC";$F$4="MIEN TRUNG";$F$4="MIEN DONG";$F$4="HCM";$F$4="MEKONG 1";$F$4="MEKONG 2"));VLOOKUP(A6;INDIRECT($F$4);2;0);0)
Thân!
 
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom