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.
Tôi gặp lỗi khi sử dụng Hàm VLOOKUP mà không hiểu tại sao

HI! GPE các bác giúp mình một chút nhé. không hiểu sao trong công thức của mình =VLOOKUP(D5,$F$3:$G$7,2,0) lại báo lỗi. àh tiện đây các bác cho hỏi là có $ và không có $ có gì khác nhau và làm sao để khi nhập công thức có $ mình nhập nhanh nhất. Thanks
 
HI! GPE các bác giúp mình một chút nhé. không hiểu sao trong công thức của mình =VLOOKUP(D5,$F$3:$G$7,2,0) lại báo lỗi. àh tiện đây các bác cho hỏi là có $ và không có $ có gì khác nhau và làm sao để khi nhập công thức có $ mình nhập nhanh nhất. Thanks

Bạn có thể nói rõ lỗi excel thông báo là lỗi gì không?

Ký tự $ cho biết vùng đó trong công thức là cố định, khi copy công thức xuống các dòng dưới (hay sang các cột khác) thì địa chỉ vùng sẽ không bị thay đổi.

Muốn nhập nhanh thì sau khi gõ địa chỉ vùng, ví dụ: F3:G7, bạn hãy ấn phím F4
 
Ban đầu cứ tưởng Microsoft viết hàm VLookup bị lỗi. Ai dè đó là do bạn áp dụng thì bị lỗi.

Tiêu đề này choáng quá!
 
Lệnh
=VLOOKUP(D5,$F$3:$G$7,2,0)
bị lỗi, khả năng là giá trị ô D5 không có trong cột 1 của vùng $F$3:$G$7

Bạn cũng nên cảm ơn ý mà hai2hai đã nêu: Câu hỏi đặt không chính xác. Nếu hỏi lại thì nên viết:
Tôi áp dụng hàm VLOOKUP như sau thì bị lỗi.
 
Tôi đã sửa lại tiêu đề. Mong rằng sau này bạn sẽ đặt tiêu đề cho bài viết chính xác hơn, giống như điều bạn muốn hỏi hơn.
 
Để bạn hiểu nhanh, trong hàm VLOOKUP ô chứa giá trị dò phải ở trong vùng dò->sửa lại vùng dò là $d$3:$g$7.
 
Theo mình nghĩ bị lỗi sau:
1/ Là điều kiện dò tìm không thấy giá trị tại D5 không có trong vùng tìm báo lỗi: NA
2/ Vùng dữ liệu không đúng, giả sử cột thứ 1 bạn muốn lấy giá trị, nhưng bạn lại nhập cột thứ 2 báo lỗi: REF
3/ Số 0, False là tìm chính xác số bạn tìm, còn True là tìm vừa đúng => bạn xem nên dùng True hay false nha bạn.
 
Gửi riêng Nguyễn Xuân Sơn:
PHP:
Bạn thay số 0 ở VLOOKUP(D5,$F$3:$G$7,2,0) bằng false xem!
Tham số thứ 3 trong VLOOKUP là 1 biểu thức logic. Đúng là dùng False. Nhưng viết hơi dài, dùng số 0 cũng được, vì Excel coi 0 là False
</DIV>
 
PHP:
Phần Doanh số 20 SP đầu tiên, Hệ số là 1.0
Phần Doanh từ 21 đến 40 SP, Hệ số là 1.1
Phần Doanh từ 41 đến 60 SP, Hệ số là 1.2
Phần Doanh từ 61 đến 80 SP, Hệ số là 1.3
Phần Doanh từ 81 đến 100 SP, Hệ số là 1.4
Phần Doanh từ 101 đến 120 SP, Hệ số là 1.5
Phần Doanh từ 121 đến 140 SP, Hệ số là 1.6
Phần Doanh từ 141 đến 160 SP, Hệ số là 1.7
Phần Doanh trên 161 SP, Hệ số là 1.8
 
Như vậy, Hệ số sẽ được tính như một số ví dụ sau:
DSo: 85 SP
HSL=(20*1.0)+(20*1.1)+(20*1.2)+(20*1.3)+(5*1.4)=99
DSo: 195 SP
HSL=(20*1.0)+(20*1.1)+(20*1.2)+(20*1.3)+(20*1.4)+(20*1.5)+(20*1.6)+(20*1.7)+(35*1.8)=279
Theo sự gợi ý của bạn Tigertiger
Mình vừa tìm ra một cách tính mới, có thể áp dụng cả trong trường hợp các mức tăng không theo cấp số cộng mà có thể tăng bất kỳ.

=(A1*1.0)+SUMPRODUCT(--(A1>{20;40;60;80;100;120;140;160});(A1-{20;40;60;80;100;120;140;160})*({1.1;1.2;1.3;1.4;1.5;1.6}-{1;1.1;1.2;1.3;1.4;1.5}))

Nếu dùng bảng trung gian để thay thế cho các giá trị trong mảng. Công thức sẽ trở thành

=(A1*1.0)+SUMPRODUCT(--(A1>SP);(A1-SP)*({1.1;1.2;1.3;1.4;1.5;1.6}-HeSo))

Trong đó:
SP={20;40;60;80;100;120;140;160} hoặc các mức tăng tùy ý
HeSo={1;1.1;1.2;1.3;1.4;1.5} hoặc các mức tăng tùy ý
{1.1;1.2;1.3;1.4;1.5;1.6} là trong bảng HeSo lấy từ dòng 2 và cộng thêm 1 dòng 1.6

Với cách tính này nếu áp dụng cho bài toán trên của mình giả sử chỉ tăng theo cấp số cộng thì có thể rút gọn lại còn như sau:

=A1+SUMPRODUCT(--(A1>20*ROW(1:8));(A1-20*ROW(1:8))*0.1)

Tuy nhiên mình đang gặp phải vấn đề khi copy công thức thì giá trị hàm ROW bị thay đổi theo.
Có bạn nào chỉ giúp cách giữ cho hàm row ko bị thay đổi trong trường hợp copy công thức không.
 
Lần chỉnh sửa cuối:
Mình vừa tìm ra một cách tính mới, có thể áp dụng cả trong trường hợp các mức tăng không theo cấp số cộng mà có thể tăng bất kỳ. Tuy nhiên công thức hơi dài.
PHP:
=(A1*1.0)+SUMPRODUCT(--(A1>{20;40;60;80;100;120;140;160});(A1-{20;40;60;80;100;120;140;160})*({1.1;1.2;1.3;1.4;1.5;1.6}-{1;1.1;1.2;1.3;1.4;1.5}))
Nếu cần có thể dùng bảng trung gian để thay thế cho các giá trị trong mảng.
Các bạn có thể chỉ giúp xem còn cách nào ngắn và dễ hiểu hơn thì giúp mình

Với cách tính này để áp dụng cho bài toán của mình giả sử chỉ tăng theo cấp số cộng thì có thể rút gọn lại còn như sau:
HTML:
=A1+SUMPRODUCT(--(A1>20*ROW(1:8));(A1-20*ROW(1:8))*0.1)
Nhưng lại gặp phải vấn đề khi copy công thức thì giá trị hàm ROW bị thay đổi theo.
Có cách nào giữ cho hàm row ko bị thay đổi trong trường hợp tăng theo cấp số cộng không.
Với những bài tóan như thế này, tôi nghĩ bạn nên theo cách của BNTT (lập bảng) và dùng vlookup là tốt nhất, khi xếp yêu cầu thay đổi thì chỉ cần thay đổi định mức, không thay công thức, còn muốn áp dụng cho nhiều sp thì thêm cột masp và offset theo cột này.
 
Với những bài tóan như thế này, tôi nghĩ bạn nên theo cách của BNTT (lập bảng) và dùng vlookup là tốt nhất, khi xếp yêu cầu thay đổi thì chỉ cần thay đổi định mức, không thay công thức, còn muốn áp dụng cho nhiều sp thì thêm cột masp và offset theo cột này.

Mình rất cảm ơn sự hướng dẫn của bạn BNTT, Cách giải của BNTT rất hay nhưng trong một số tình huống ở những điểm tăng giữa các mốc Hệ số thường phải tính theo con số phán đoán (giảm 1 hay 0.1) nên chưa đảm bảo chính xác theo những trường hợp khác nhau.
BNTT đã viết:
Giả sử hệ số lương được tính theo từng quý căn cứ theo TB của 3 tháng quý trước, khi đó con số đạt được sẽ ở mức lẻ như 0.5; 20.5 hay 40.5, Lúc này kết quả sẽ không phản ánh đúng hoặc có thể sinh lỗi

Ngoài ra yêu cầu của bài toán cũng thay đổi so với bài hướng dẫn của BNTT thay vì tính HSL cho toàn bộ SP theo một mức HS thì bây giờ phải chia làm nhiều mốc với từng mức HS khác nhau. Vì vậy phải đưa ra cách giải mới sao cho phù hợp hơn.
 
Lần chỉnh sửa cuối:
Hàm VLOOKUP nếu kết hợp với điều kiện dò tìm xếp theo cột đầu tiên và các cột dữ liệu tiếp theo thì kết xuất được một bảng dữ liệu . Ví dụ :về dữ liệu nhân sự nếu bạn tổ chức dữ liệu theo mã NS và thứ tự các dòng dữ liệu của nhân sự đó theo các cột thì với hàm VLOOKUP bạn sẽ kết xuất được một bảng dữ liệu nhân sự của 1 người với nhiều dòng và nhiều cột tùy ý.
 
Dùng VLOOKUP trong trường hợp này như thế nào?

Mục này hay. Xin các anh, chị cho hỏi hàm này:
Tôi dùng hàm VLOOKUP và MAX như sau
=VLOOKUP(MAX($A2:$A3)$A:$H,5,0), thì có kết quả đúng thí dụ: NGHỀ NGHIỆP tại cell E5, tôi muốn kết hợp với cell Ê6 có tên là Y TÁ thì dùng hàm như sau:
=VLOOKUP(MAX($A2:$A3)$A:$H,5-6,0) nhưng kết quả không được. Ai biết chỉ dùm với công trên có gì sai và sửa thế nào để cho kết quả là NGHỀ NGHIỆP Y TÁ . Chân thành cảm ơn
 
Bạn viết hàm Vlookup này mình thấy có gì đó không ổn thì phải.
Dòng dưới 5-6 = -1 thì làm sao có cột nào mà tìm chứ, tất nhiên là lỗi rồi!
Giá trị ở chỗ đó chỉ nhảy từ 2 đến số cột quét cuối cùng thôi! Ví dụ quét lấy 5 cột thì số đó sẽ là từ 2 đến 5 thôi! Mình nghĩ nó phải viết như vầy:
=VLOOKUP(MAX($A2:$A3),$A:$H,6,0)
Bạn có thể gửi vài dòng dữ liệu lên được không hoặc file càng tốt! Chứ nói vầy thì chẳng biết phải giúp như thế nào cả?
 
Ý là nối 2 kết quả tìm kiếm ở cột 5 và cột 6 lại đó mà.
=VLOOKUP(MAX($A2:$A3),$A:$H,5,0)& ": "&VLOOKUP(MAX($A2:$A3),$A:$H,6,0)
Nhưng sao lại hỏi chen ngang bài không đúng nội dung thế?
 
Hiện Kết Quả Vlookup ngay trên Form

Dear các bác,

Mình có tạo 01 UserForm truy tìm dữ liệu ( nhập code vào thì sẽ cho ra tên chi tiết) Nhưng mình muốn cài công thức Vlookup vào VBA luôn để khi nhấn nút thì kết quả hiện ra ngay trên Form, hoặc khi gõ mã là kết quả sẽ hiện ra trên Form luôn, nhưng mình không biết phải viết code thế nào để làm được điều này. Các Bác xem qua file và giúp dùm mình với.

Cám ơn các bác rất nhiều,
 

File đính kèm

  • Hien KQ tren Form.xls
    29.5 KB · Đọc: 57
Dear các bác,

Mình có tạo 01 UserForm truy tìm dữ liệu ( nhập code vào thì sẽ cho ra tên chi tiết) Nhưng mình muốn cài công thức Vlookup vào VBA luôn để khi nhấn nút thì kết quả hiện ra ngay trên Form, hoặc khi gõ mã là kết quả sẽ hiện ra trên Form luôn, nhưng mình không biết phải viết code thế nào để làm được điều này. Các Bác xem qua file và giúp dùm mình với.

Cám ơn các bác rất nhiều,

Anh xử lý sự kiện TextBox1_AfterUpdate như sau:
PHP:
Private Sub TextBox1_AfterUpdate()
On Error GoTo ThaiBinh_Excel
Me.TextBox1.Value = UCase(Me.TextBox1.Value)
Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Sheets("sheet1").[B:C], 2, 0)

Exit_Sub:
Exit Sub

ThaiBinh_excel:
    MsgBox "Ma Nhap vao khong dung, vui long nhap lai!", vbInformation, "Thong bao"
    Resume Exit_Sub
End Sub
 

File đính kèm

  • Hien KQ tren Form.xls
    30.5 KB · Đọc: 88
Dear các bác, Mình có tạo 01 UserForm truy tìm dữ liệu ( nhập code vào thì sẽ cho ra tên chi tiết) Nhưng mình muốn cài công thức Vlookup vào VBA luôn để khi nhấn nút thì kết quả hiện ra ngay trên Form, hoặc khi gõ mã là kết quả sẽ hiện ra trên Form luôn, nhưng mình không biết phải viết code thế nào để làm được điều này. Các Bác xem qua file và giúp dùm mình với. Cám ơn các bác rất nhiều,
Bạn mở file đính kèm. Cái này gọn hơn, đáp ứng được yêu cầu của bạn. Bạn có thể gõ trực tiếp vào hay chọn từ danh sách cũng được.
 

File đính kèm

  • HienForm(new).xls
    35 KB · Đọc: 88
Lần chỉnh sửa cuối:
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom