Vậy thì dùng OFFSET không thôi, cần gì VLOOKUPEn đang có ý định từ phiếu kho chuyển thành phiếu bán hàng nên en định làm vậy , anh gúp em nhé!
Nếu muốn dịch xuống dưới 1, 2 hoặc 3 dòng thì thay số dòng này = 1, 2 hoặc 3=OFFSET($E$3,MATCH($G$3,$B$4:$B$17,0)+ số dòng,)
Chỉ có điều là ô G3 phải biết chính xác theo thứ tự cột "So CT". Thân.=OFFSET($E$4,$G$3+ROW()-7,0)
En đang có ý định từ phiếu kho chuyển thành phiếu bán hàng nên en định làm vậy , anh gúp em nhé!
G5 =OFFSET(E1,MATCH($G$3,$B:$B,0)-1,)
Đâu có được! Công thức này chỉ đúng trong bài cụ thể này thôi... vì may mắn số thứ tự trong cột B đã được sắp xếp đúng vị trí... Nếu số 004 không nằm ở dòng 5, số 007 không nằm ở dòng 8... vân... vân thì công thức... Tèo ---> Cuối cùng vẩn phải MATCH là chắc ănNếu muốn xác định vị trí không thì đâu cần xác định Match làm gì. Mình chỉ dùng hàm Offset không cũng được vậy!
Chỉ có điều là ô G3 phải biết chính xác theo thứ tự cột "So CT".=OFFSET($E$4,$G$3+ROW()-7,0)
Thân.
các bác gúp hộ Em dính kèm
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 40 đến 60 SP thì Hệ số là 1.2
Nếu Doanh số từ trên 60 đến 80 SP thì Hệ số là 1.3
Nếu Doanh số từ trên 80 đến 100 SP thì Hệ số là 1.4
Nếu Doanh số từ trên 100 đến 120 SP thì Hệ số là 1.5
Nếu Doanh số từ trên 120 đến 140 SP thì Hệ số là 1.6
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
(Máy bị lỗi không up được file đính kèm)
Mình không chắc từ "từ" của bạn nên mình cho bạn 2 cái. Bạn cho cái nào
=VALUE(1&"."&INT((A1-0.1)/20))
Cái này thì với A1 = 60 thì trả về 1.2
=VALUE(1&"."&INT(A1/20))
Cái này thì là 1.3.
Thân.
Bạn nhầm rồi. VLOOKUP, nếu không dùng tham số thứ 4, thì trả về giá trị lớn nhất mà nhỏ hơn giá trị cần tìm, chỉ với một điều kiện là danh sách dò tìm của bạn phải được sắp xếp từ nhỏ đến lớn.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 40 đến 60 SP thì Hệ số là 1.2
Nếu Doanh số từ trên 60 đến 80 SP thì Hệ số là 1.3
Nếu Doanh số từ trên 80 đến 100 SP thì Hệ số là 1.4
Nếu Doanh số từ trên 100 đến 120 SP thì Hệ số là 1.5
Nếu Doanh số từ trên 120 đến 140 SP thì Hệ số là 1.6
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
(Máy bị lỗi không up được file đính kèm)
Để giải quyết mình đã tạo một bảng hệ số theo yêu cầu trên và dùng hàm Vlookup để tính hệ số lương đạt được, tuy nhiên hàm VLookup chỉ trả về kết quả trong trường hợp lớn hơn hoặc bằng. Vậy các bạn có thể chỉ giáo giúp trường hợp này nên dùng hàm gì để trả về kết quả tìm kiếm nhỏ hơn hoặc bằng không.
Bạn nhầm rồi. VLOOKUP, nếu không dùng tham số thứ 4, thì trả về giá trị lớn nhất mà nhỏ hơn giá trị cần tìm, chỉ với một điều kiện là danh sách dò tìm của bạn phải được sắp xếp từ nhỏ đến lớn.
Do đó, bài toán của bạn hoàn toàn có thể sử dụng VLOOKUP, với một chút "mẹo".
Bạn xem bảng sau:Khối cell A1:B10 là bảng dò tìm, tôi đặt tên cho nó là Heso|
A|B|C|D|E|
1|SP|HS||SP|HS|
2|0|1| |19|1|
3|20|1.1| |20|1|
4|40|1.2| |151|1.7|
5|60|1.3| |40|1.1|
6|80|1.4| |4|1|
7|100|1.5| |2|1|
8|120|1.6| |167|1.8|
9|140|1.7| |60|1.2|
10|160|1.8| |125|1.6|
11| | | |141|1.7|
12| | | |5|1|
13| | | |35|1.1|
14| | | |189|1.8|
15| | | |170|1.8|
16| | | |72|1.3|
17| | | |93|1.4|
18| | | |131|1.6|
19| | | |175|1.8|
20| | | |190|1.8|
Tại cột E, ô E2 chẳng hạn, nếu tôi dùng công thức:=VLOOKUP(D2, Heso, 2)Thì kết quả sẽ cho ra hệ số tương ứng với mức sản phẩm: từ 0 đến 19, từ 20 đến 39, từ 40 đến 59...
Tuy nhiên, vì bạn muốn là: từ 0 đến 20, từ 21 đến 40, từ 41 đến 60... Do đó, như ở trên tôi có nói cái "mẹo", tức là bạn đem số sản phẩm cần tìm hệ số trừ bớt đi 1, như công thức sau đây (ở E2):=VLOOKUP(D2-1, Heso, 2)Bạn xem thử, ứng với mỗi sản phẩm bên cột D, thì hệ số tương ứng của nó bên cột E có đúng ý bạn không ?
Cái này bạn có thể dùng hàm sumproduct cũng được. VD: =SUMPRODUCT(--(C15>B3:B11),--(C15<=C3:C11),--(D311)).
Cảm ơn bạn, nhưng hàm này sử dụng sao đây bạn.
Vì mới làm excel nên còn nhiều bỡ ngỡ, Mình không hiểu dấu -- này có tác dụng gì nhỉ
Bạn hướng dẫn giúp mình với
A1 = -True
A2 = --True
Tôi đoán có lẽ bạn thiếu tham số thứ tư: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?
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=VLOOKUP(Trị dò, bảng dò, cột dò, cách dò)
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ế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
Mình ko gửi file nên được có bác chỉ giáo giúp
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
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
Bạn dùng code này bảo đảm luôn!
Thâ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
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 đỡ
=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))
Bạn dùng code này bảo đảm luôn!
Thâ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
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)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.
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)
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?
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 thay số 0 ở VLOOKUP(D5,$F$3:$G$7,2,0) bằng false xem!
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
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 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.
Nếu cần có thể dùng bảng trung gian để thay thế cho các giá trị trong mảng.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}))
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:
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.HTML:=A1+SUMPRODUCT(--(A1>20*ROW(1:8));(A1-20*ROW(1:8))*0.1)
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.
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ỗiBNTT đã viết:=VLOOKUP(D2-1, Heso, 2)
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,
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
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.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
Private Sub TextBox1_AfterUpdate()
On Error GoTo ThaiBinh_Excel
Me.TextBox3 = "S" & Right("0000000" & Me.TextBox1, 8) ' Tùy vào cách đặt dữ liệu ở cột A mà sửa lại cho phù hợp
Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox3.Value, Sheets("sheet1").[A:C], 3, 0)
Exit_Sub:
Exit Sub
ThaiBinh_excel:
MsgBox "Khong co so hieu nay, vui long nhap lai!", vbInformation, "Thong bao"
Resume Exit_Sub
End Sub
1/ Thêm vào form một Textbox nữa đặt tên là Textbox3 có thuộc tính Visible = True
2/ Câu lệnh xử lý sẽ là :
</SPAN></SPAN>PHP:Private Sub TextBox1_AfterUpdate() On Error GoTo ThaiBinh_Excel Me.TextBox3 = "S" & Right("0000000" & Me.TextBox1, 8) ' Tùy vào cách đặt dữ liệu ở cột A mà sửa lại cho phù hợp Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox3.Value, Sheets("sheet1").[A:C], 3, 0) Exit_Sub: Exit Sub ThaiBinh_excel: MsgBox "Khong co so hieu nay, vui long nhap lai!", vbInformation, "Thong bao" Resume Exit_Sub End Sub
1/ Mục đich phải format trong VBA là để giá trị của Textbox3 giống với giá trị của cột A trong Sheet1 và giá trị này để ta dùng VLOOKUP tìm kiếm
2/ Khi gõ 1,2,3... vào Textbox2 thì Textbox3 tự format theo
Thân
P/S : Việc format ở cột A trong Sh và việc format Textbox trong Form là hai chuyện hoàn toàn khác nhau nhưng mục đích chung là để 2 dữ liệu giống nhau phục vụ cho việc tìm kiếm bằng VLOOKUP
VLOOKUP là hàm dò tìm chính xác. Vì vậy điều kiện dò tìm là phải chính xác nếu không sẽ không dò tìm được. Bình xem lại cú pháp của hàm VLOOKUP sẽ hiểu ngay thôi. Nếu không muốn dùng trung gian thì cột A đừng có format, cứ để theo số TT tự nhiên
Thân
P/S : Khi nãy gọi điện cho chú mà không được. Xóa số rồi hả ?
Private Sub TextBox1_AfterUpdate()
On Error GoTo ThaiBinh_excel
Me.TextBox2 = Application.VLookup(Val(TextBox1), Range("bangdo"), 3, 0)
Range("A1").Select
Exit_Sub:
Exit Sub
ThaiBinh_excel:
MsgBox "Khong co so hieu nay, vui long nhap lai!", vbInformation, "Thong bao"
TextBox1 = "" : TextBox2 = ""
TextBox1.SetFocus
Resume Exit_Sub
End Sub
Do việc Format ở hai vị trí là khác nhau nên VBA nó hổng có hiểu
Vậy làm theo cách vòng vo vậy. Mượn Sheet để dò tìm
Bình xem file kèm theo sẽ rõ
Thân
Cám ơn anh, nhưng như thế không ổn ạ vì nếu vậy thì em cho Vlookup trực tiếp ngoài dữ liệu rồi set TEXBOX.VALUE = dữ liệu bên ngoài là được rồi. Em chỉ muốn Vlookup trực tiếp trên Form thôi a.
Best Regards.
Em thực hành Excel, dùng công thức này không được:"=vlookup(mid(.....),......,...,...)".Công thức em đã soạn ra trong " ĐỀ 4",của file em đính kèm ,dưới mấy dòng chữ đỏ!.Mấy bác giải thích dùm em là em đã sai ở chỗ nào ,và cách khắc phục ạh! Em xin chân thành cảm ơn!
http://hdtdragonking.googlepages.com...2222222222.XLS
![]()
Hoặc=VLOOKUP(--MID(B7,2,1),$G$16:$H$19,2,0)
Hoặc=VLOOKUP(0+MID(B7,2,1),$G$16:$H$19,2,0)
=VLOOKUP(MID(B7,2,1)*1,$G$16:$H$19,2,0)
Không cần vòng vo gì đâu, nếu biết chắc cột A là số thì thêm Val() là được:
PHP:Private Sub TextBox1_AfterUpdate() On Error GoTo ThaiBinh_excel Me.TextBox2 = Application.VLookup(Val(TextBox1), Range("bangdo"), 3, 0) Range("A1").Select Exit_Sub: Exit Sub ThaiBinh_excel: MsgBox "Khong co so hieu nay, vui long nhap lai!", vbInformation, "Thong bao" TextBox1 = "" : TextBox2 = "" TextBox1.SetFocus Resume Exit_Sub End Sub
Đã là số mà định dạng custom "S"000000 thì vẫn cứ là số, khi dò tìm chỉ cần giá trị dò tìm là số thì sẽ tìm được. Thí dụ thể hiện là S000015 nhưng chỉ cần tìm 15 (số) là ra. Chỉ khi tìm "15" (text) mới không ra, lúc đó phải dùng Val() chuyển về số.XuanThanh đã viết:VLOOKUP là hàm dò tìm chính xác. Vì vậy điều kiện dò tìm là phải chính xác nếu không sẽ không dò tìm được. Bình xem lại cú pháp của hàm VLOOKUP sẽ hiểu ngay thôi. Nếu không muốn dùng trung gian thì cột A đừng có format, cứ để theo số TT tự nhiên
Me.TextBox7 = Application.VLookup(Val(TextBox1), Range("data", 26, 0))
Chắc là lỗi dòng này.
1. "data" là name bạn đặt như thế nào? name có giá trị toàn wokbook hay name chỉ có giá trị trong worksheet? nếu như vầy là đúng: = sheet1!$A$1:$Z$200
2. vùng data đó có bao nhiêu cột? (tìm tới cột thứ 26 lận)
3. Có 1 chỗ sai màu đỏ không biết là chỉ sai trong bài viết trên hay trong code?
Sửa lại như vầy: Me.TextBox7 = Application.VLookup(Val(TextBox1), Range("data"), 26, 0)
Bổ sung:
Đã là số mà định dạng custom "S"000000 thì vẫn cứ là số, khi dò tìm chỉ cần giá trị dò tìm là số thì sẽ tìm được. Thí dụ thể hiện là S000015 nhưng chỉ cần tìm 15 (số) là ra. Chỉ khi tìm "15" (text) mới không ra, lúc đó phải dùng Val() chuyển về số.
Bạn dùng cái này:Thông thường ta vẫn dùng hàm VLOOKUP như ví dụ sau: VLOOKUP($I9;$B$6:$G$15;3;0) trong đó các cột tham chiếu đều là "tĩnh" (trong vd này là cột 3) do đó phải rất thận trọng với bảng nguồn vì nếu thêm hoặc bớt cột của bảng nguồn thì vị trí của cột tham chiếu cũng thay đổi và kết quả không còn đúng nữa, thật là tai hại khi đã gán công thức đi khắp nơi chẳng biết đằng nào mà lần ?.
Để làm cho làm cho các cột tham chiếu trở thành "động" tức là khi vùng nguồn nở ra (khi thêm cột) hoặc co lại (khi bớt cột) kết quả vẫn luôn đúng ta thay số 3 bằng hàm Columns($cột điều kiện:cột tham chiếu) vd: VLOOKUP($I$9,$B$6:$G$15,COLUMNS($B,0) từ đây bạn có thể tuỳ ý thay đổi không gian vùng nguồn (miễn là không xoá cột đầu tiên và các cột đã tham chiếu) xem chi tiết trong file đính kèm.
Mong rằng chiêu này giúp ích ít nhiều cho bạn nào hay dùng VLookup.
Tôi góp vui cái này:=VLOOKUP($I$9,$A$6:$G$16,COLUMNS($A),0)
Còn nếu đãm bảo dòng không bị chèn thêm thì công thức càng gọn hơn:=OFFSET($D$6,MATCH($I$9,$A$6:$A$16,0)-1,)
=OFFSET($D$6,$I$9-1,)
Công thức cũ của bạn:View attachment 17879
Các anh chị xem giúp em file này. Vùng màu vàng chứa hàm Vlookup em định hỏi.
Giả sử giá trị cần tìm là 8 thì kết quả là 15 mới đúng nhưng sao hàm lại trả về 5. Các giá trị cần tìm khác cũng không đúng.
Anh chị nào rõ xin chỉ giúp. Thanks
=VLOOKUP(D30,E11:K24,7)
=VLOOKUP(D30,E11:K24,7,0)