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

  • Thread starter Thread starter songlon
  • Ngày gửi Ngày gửi
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.
Bạn nêu một ví dụ về cái sai đó được không ?
 
tôi nghĩ bạn nên để ý giá trị tuyệt đối hoặc tương đối, chứ khi đã đúng cấu trúc hàm thi không thê sai được và cũng có thể bạn đánh sai giá trị hàm.
 
Các bác cho em hỏi giùm. Em dùng hàm vlookup nhưng nhiều lúc trả về giá trị sai là nguyên nhân vì sao? có cách nào khắc phục ko?
Tôi đoán có lẽ bạn thiếu tham số thứ tư:
Cú pháp VLOOKUP là:
=VLOOKUP(Trị dò, bảng dò, cột dò, cách dò)
Bạn xem lại có phải bạn đã bỏ mất tham số thứ tư này không? Nếu đúng như thế thì việc dò sẽ là "Dò không chính xác"... Trong 1 danh sách không được sort trước sẽ cho kết quả khong đúng như ý muốn
 
Bạn thêm số 0 vào cuối dòng lệnh xem có chính xác không? Nếu không thì coi chừng trong mãng dữ liệu có ô trùng nhau đó!
=Vlookup(<ô giá tri>,$<mãng dữ liệu>,<số cột muốn lấy>,0)
Thân.
 
Nếu mảng dữ liệu trùng nhau có cách nào giải quyết ko? Bạn po_pikachu có nick chat ko mình gửi file cho bạn xem hộ mình. mình gửi file lên diễn đàn ko được
 
Nếu mảng dữ liệu trùng nhau có cách nào giải quyết ko? Bạn po_pikachu có nick chat ko mình gửi file cho bạn xem hộ mình. mình gửi file lên diễn đàn ko được
Nếu gặp dử liệu trùng thì VLOOKUP sẽ tìm dòng đầu tiên mà nó tìm thấy... Vậy bạn muốn tìm cái gì đây?
Nói rõ hơn 1 chút nhé
 
Bạn hỏi vậy thật khó, đến mình là người mà bảo chọn 1 trong 2 cô Hồng do bạn giới thiệu cũng chịu huống chi công thức. Để chính xác bạn phải sửa lại tiêu chuẩn dò thôi.
 
Chào các bạn
Mình gặp phải một bài toán tính hệ số lương như sau:
Nếu Doanh số từ 20 SP trở xuống thì Hệ số là 1.0
Nếu Doanh số từ trên 20 đến 40 SP thì Hệ số là 1.1
...............................
Nếu Doanh số từ trên 140 đến 160 SP thì Hệ số là 1.7
Nếu Doanh số trên 160 SP thì Hệ số là 1.8

Theo yêu cầu mới nhất, thay vì Hệ số lương được tính theo ở trên. Tháng này có sự thay đổi như sau:
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

Mình chưa tìm ra cách giải nào mà không dùng giá trị trung gian hoặc công thức nào tối ưu nhất cho bài toán này.

Rất mong các anh chị trong diễn đàn giúp đỡ
 
Lần chỉnh sửa cuối:
Hàm vlookup, hlookup chỉ trả về giá trị đầu tiên mà nó tìm thấy nếu trong dãy có nhiều dữ liệu trùng thì làm sao để tìm kiếm hàm giá trị đúng mà mình muốn tìm. Bác nào có cách gì ko
 
Bạn dùng code này bảo đảm luôn!
PHP:
Function hsluong(cel As Integer)
For i = 0 To Int(cel / 20)
If i > 8 Then k = 8 Else: k = i
    If i = 0 Then
    temp = 20
    ElseIf 20 * (i + 1) >= cel Then
    temp = temp + (cel - 20 * i) * Val("1." & k)
    Else
    temp = temp + 20 * Val("1." & k)
    End If
Next
hsluong = temp
End Function
Thân.
 
Bạn dùng code này bảo đảm luôn!
PHP:
Function hsluong(cel As Integer)
For i = 0 To Int(cel / 20)
If i > 8 Then k = 8 Else: k = i
    If i = 0 Then
    temp = 20
    ElseIf 20 * (i + 1) >= cel Then
    temp = temp + (cel - 20 * i) * Val("1." & k)
    Else
    temp = temp + 20 * Val("1." & k)
    End If
Next
hsluong = temp
End Function
Thân.

Sao loằng ngoằng thế?

Val("1." & k) thay thành 1+k/10
và các cái khác nữa, NHƯNG bài này dùng công thức là được


Theo yêu cầu mới nhất của Lãnh đạo, thay vì Hệ số lương được tính theo trích dẫn ở trên. Tháng này có sự thay đổi như sau:
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

Mình chưa tìm ra cách giải nào mà không dùng giá trị trung gian hoặc công thức nào tối ưu nhất cho bài toán này.

Rất mong các anh chị trong diễn đàn giúp đỡ


Nếu đúng thế thì dùng công thức là đủ dùng, vì hệ số tăng theo cấp số cộng
Giả sử số DSo đặt tại A1, thì tại ô cần tính hệ số như sau
PHP:
=IF(A1>160,(A1-160)*1.8+20*(1+1.7)/2*8,MOD(A1,20)*(1+TRUNC(A1/20)/10)+20*(1+1+(TRUNC(A1/20)-1)/10)/2*TRUNC(A1/20))
tôi vẫn để các số theo biểu thưc tổng cấp số cộng để hiểu cách tính ví dụ (1+1.7),.... bạn có thể thay nó bằng số luôn 2.7,... chẳng hạn, để đỡ rối và nhanh hơn
 
Lần chỉnh sửa cuối:
Bạn dùng code này bảo đảm luôn!
PHP:
Function hsluong(cel As Integer)
For i = 0 To Int(cel / 20)
If i > 8 Then k = 8 Else: k = i
    If i = 0 Then
    temp = 20
    ElseIf 20 * (i + 1) >= cel Then
    temp = temp + (cel - 20 * i) * Val("1." & k)
    Else
    temp = temp + 20 * Val("1." & k)
    End If
Next
hsluong = temp
End Function
Thân.

Dùng code thì các bài toán đều dễ dàng giải quyết.
Tuy nhiên code gặp phải máy có cài diệt virus thì tiêu luôn, lại phải viết lại.
Mặt khác mặc định một số máy để security là High thì lại phải điều chỉnh lại.

Vì vậy mình luôn muốn tận dụng tối đa khả năng của hàm sẵn có là tối ưu nhất.
Mình cảm ơn bạn Tigertiger. Bạn có thể giúp mình xem còn cách nào để tận dụng ngay bảng hệ số cho sẵn không. Vì đây chỉ là ví dụ cho một dòng SP, còn các SP khác lại có bảng hệ số khác.
 
Mình chưa tìm ra cách giải nào mà không dùng giá trị trung gian hoặc công thức nào tối ưu nhất cho bài toán này.
Công thức trong file này dài nhưng tổng quát, chỉ cần các mốc số lượng SP cách đều nhau, hệ số bất kỳ (không cách đều)
 

File đính kèm

Mình cảm ơn bạn Tigertiger. Bạn có thể giúp mình xem còn cách nào để tận dụng ngay bảng hệ số cho sẵn không. Vì đây chỉ là ví dụ cho một dòng SP, còn các SP khác lại có bảng hệ số khác.


ptm0412 đã viết:
Công thức trong file này dài nhưng tổng quát, chỉ cần các mốc số lượng SP cách đều nhau, hệ số bất kỳ (không cách đều)

Tổng quát luôn, các khoảng chia mốc SP và cả HS có thể bất kỳ
Công thức cũng dựa trên SUMPRODUCT nhưng tổng quát
có thể áp dụng cho các Sp khác, như bạn mong muốn
xem file gửi kèm
 

File đính kèm

Bạn dùng VLOOKUP để tìm giá trị thì có thể là bạn đang xử lý một cơ sở dữ liệu excel bằng công thức thì theo tôi bạn có thể thực hiện theo vài bước sau thì có hiệu quả tốt hơn:
1. Tối ưu hóa bảng dữ liệu theo nội dung quản lý.
2. Bố trí vùng trả kết quả dò bên trên CSDL. Nếu bạn định dò theo một số giá trị thì bố trí số dòng của vùng này đủ cho số giá trị cần dò.
3. Khi lập công thức bạn có thể đánh số cột trên đầu dòng để tham chiếu số thứ tự cột cho cột dò sau đó bạn coppy công thức tiện hơn.
 
Thông thường thì các yếu tố không tìm thấy là do dữ liệu ở trong bảng tra có khoảng trắng ở phía sau cùng của dữ liệu. Vì vậy bạn nên dùng hàm trim() cho cột mã trong bảng tìm kiếm.
 
Hàm vlookup lại lỗi:

Mình ko hiểu sao ham :=VLOOKUP(D5,$F$3:$G$7,2,0)lại báo lỗi. Àh tiên đây các bạn cho mình hỏi dấu $ ở đây có tác dụng gì khác nêu ko có nó. và làm sao để thêm dấu $ vào nhanh nhất. thanks
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn lại gửi bài không đúng chỗ rồi. Đây là Box Hướng dẫn sử dụng diễn đàn chứ đâu phải là Box để bạn hỏi công thức ?
Bạn gửi bài ở đây sẽ không ai dám trả lời cho bạn hết, bởi vì họ biết chắc rằng bài này sẽ bị xóa.
Tôi nhớ không lầm thì Admin đã nhắc nhở bạn một lần, ở đây.
Bạn gửi lại bài vào đúng chỗ đi. Vì tôi sẽ xóa bài này.
Cả bài này cũng vậy: http://www.giaiphapexcel.com/forum/showthread.php?t=14564
Bạn cần nêu câu hỏi cho rõ ràng và gõ tiếng Việt có đầy đủ các dấu.
Nếu có thời gian, bạn nên đọc qua bài "Đặt một câu hỏi thông minh như thế nào" ở ngay dưới chữ ký của tôi.
 
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