Mình cần hỗ trợ công thức trả về phần trăm giảm giá theo số tiền mà khách đã mua hàng ạ.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Kemmie Nguyen

Thành viên mới
Tham gia
28/6/24
Bài viết
8
Được thích
4
Hiện tại mình cần công thức giúp trả về kết quả là số % giảm giá mà khách mua bao nhiêu tiền thì sẽ được mức % đó.
Máy tính công ty mình hiện đang sử dụng Excel2010.
.
Điều kiện:
Khách mua từ 100.000đ - Dưới 500.000đ -> 3%
Khách mua từ 500.000đ - Dưới 1.000.000đ -> 4%
Khách mua từ 1.000.000đ - 5.000.000đ -> 7%
Khách mua từ 5.000.000đ - 10.000.000đ -> 10%
.
*Đặc biệt đối với khách tên NGA, MY, NAM, MINH thì:
Khách mua từ 100.000đ - Dưới 500.000đ -> 4%
Khách mua từ 500.000đ - Dưới 1.000.000đ -> 6%
Khách mua từ 1.000.000đ - 5.000.000đ -> 10%
Khách mua từ 5.000.000đ - 10.000.000đ -> 15%Screenshot_20240628_180026_Sheets.png
 

File đính kèm

  • EXAMPLE.xlsx
    5.1 KB · Đọc: 9
Lần chỉnh sửa cuối:
Công thêm cái tiêu đề viết hoa. Hết hứng muốn giúp.

Thử xem người hay viết tắt hiểu nổi không:
Lp 1 c n gg v ut
View attachment 302031
d gg
%gg = VLookup(tk, bggCuaTui, 3 - IsError(Match(tk, bkhUuTien, 0)),1)
View attachment 302032
Mình viết tiếng Việt đầy đủ mà, duy chỉ có chữ "mn" là mọi người thôi. Mình đâu viết tắt nhiều quá đâu @@
Do mình mới tham gia diễn đàn nên không biết lối sinh hoạt của mọi người, bạn thông cảm vì tiêu đề mình viết hoa nha. Do mình nghĩ là viết hoa để nhấn mạnh nội dung chủ yếu thôi.
Bài đã được tự động gộp:

Công thêm cái tiêu đề viết hoa. Hết hứng muốn giúp.

Thử xem người hay viết tắt hiểu nổi không:
Lp 1 c n gg v ut
View attachment 302031
d gg
%gg = VLookup(tk, bggCuaTui, 3 - IsError(Match(tk, bkhUuTien, 0)),1)
View attachment 302032
Còn phần tên khách là bên công ty mình họ chỉ nhập tên, và không có dấu nên mình chỉ điền giá trị y chang vào thôi. Mình cần giúp đỡ mà, chứ đâu phải thể hiện gì đâu..
 
Mình viết tiếng Việt đầy đủ mà, duy chỉ có chữ "mn" là mọi người thôi. Mình đâu viết tắt nhiều quá đâu @@
Do mình mới tham gia diễn đàn nên không biết lối sinh hoạt của mọi người, bạn thông cảm vì tiêu đề mình viết hoa nha. Do mình nghĩ là viết hoa để nhấn mạnh nội dung chủ yếu thôi.
Khi bạn bắt đầu mở chủ đề có thấy như hình sau không? không thể nói không biết. Nếu ai cũng nhấn mạnh tiêu đề thì sẽ ra sao, huống gì thành viên muốn trả lời không chọn chủ đề được nhấn mạnh mà chọn vấn đề vừa sức mình.

1719592871441.png

Còn viết tắt thì ngoại trừ MN (mn), bạn còn viết tắt e ...

Tốt nhất bạn cần sửa lại tiêu đề và nội dung không viết tắt thì sẽ được hỗ trợ nhanh hơn.
 
Khi bạn bắt đầu mở chủ đề có thấy như hình sau không? không thể nói không biết. Nếu ai cũng nhấn mạnh tiêu đề thì sẽ ra sao, huống gì thành viên muốn trả lời không chọn chủ đề được nhấn mạnh mà chọn vấn đề vừa sức mình.

View attachment 302033

Còn viết tắt thì ngoại trừ MN (mn), bạn còn viết tắt e ...

Tốt nhất bạn cần sửa lại tiêu đề và nội dung không viết tắt thì sẽ được hỗ trợ nhanh hơn.
Mình cảm ơn bạn đã góp ý ạ, lúc đầu mình không có đọc dòng chữ trong chỗ đặt tiêu đề. Cho mình xin lỗi nha, mình sẽ sửa lại bài
 
Mình cảm ơn bạn đã góp ý ạ, lúc đầu mình không có đọc dòng chữ trong chỗ đặt tiêu đề. Cho mình xin lỗi nha, mình sẽ sửa lại bài
Làm xong từ hôm qua, nay thấy bạn sửa rồi nên mới up bài. Mình sẽ tạo bảng tra cứu (bạn xem file đính kèm)
Kết thúc công thức đều phải nhấn Ctrl+Shift+Enter
 

File đính kèm

  • trả về kết quả là số % giảm giá.xlsx
    10.7 KB · Đọc: 6
Mình cảm ơn bạn đã góp ý ạ, lúc đầu mình không có đọc dòng chữ trong chỗ đặt tiêu đề. Cho mình xin lỗi nha, mình sẽ sửa lại bài
Mình học hỏi cách viết hàm của bác Vietmini nên thử viết công thức này, bạn xem có đúng ko nhé

C4= IFERROR(IFERROR(IF(MATCH(A4,{"NGA","MY","NAM","MINH"},0),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000},1),0%,4%,6%,10%,15%),""),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000},1),0%,3%,4%,7%,10%)),"")
 
Mình học hỏi cách viết hàm của bác Vietmini nên thử viết công thức này, bạn xem có đúng ko nhé

C4= IFERROR(IFERROR(IF(MATCH(A4,{"NGA","MY","NAM","MINH"},0),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000},1),0%,4%,6%,10%,15%),""),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000},1),0%,3%,4%,7%,10%)),"")
Hàm này trả thiếu giá trị 10.000.000 rồi bác
 
Hàm này trả thiếu giá trị 10.000.000 rồi bác
Bạn chỉ cần cộng thêm 1 vào giá trị( mốc so sánh ) là ra

C4=IFERROR(IF(MATCH(A4,{"NGA","MY","NAM","MINH"},0),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000}+1,1),0%,4%,6%,10%,15%),""),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000}+1,1),0%,3%,4%,7%,10%))
 
Hiện tại mình cần công thức giúp trả về kết quả là số % giảm giá mà khách mua bao nhiêu tiền thì sẽ được mức % đó.
Máy tính công ty mình hiện đang sử dụng Excel2010.
.
Điều kiện:
Khách mua từ 100.000đ - Dưới 500.000đ -> 3%
Khách mua từ 500.000đ - Dưới 1.000.000đ -> 4%
Khách mua từ 1.000.000đ - 5.000.000đ -> 7%
Khách mua từ 5.000.000đ - 10.000.000đ -> 10%
.
*Đặc biệt đối với khách tên NGA, MY, NAM, MINH thì:
Khách mua từ 100.000đ - Dưới 500.000đ -> 4%
Khách mua từ 500.000đ - Dưới 1.000.000đ -> 6%
Khách mua từ 1.000.000đ - 5.000.000đ -> 10%
Khách mua từ 5.000.000đ - 10.000.000đ -> 15%View attachment 302022
- Dưới 100.000đ thì giảm bao nhiêu %, hay không giảm gì cả?

- Trên hoặc bằng 10 triệu đồng thì giảm bao nhiêu %, hay vẫn giảm 10%/15%?

Thân
 
Mình học hỏi cách viết hàm của bác Vietmini nên thử viết công thức này, bạn xem có đúng ko nhé

C4= IFERROR(IFERROR(IF(MATCH(A4,{"NGA","MY","NAM","MINH"},0),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000},1),0%,4%,6%,10%,15%),""),CHOOSE(MATCH(B4,{0,100000,500000,1000000,5000000,10000000},1),0%,3%,4%,7%,10%)),"")
Công thức này có lỗi thuộc loại không hiển hiện. Một ngày đẹp trời nào đó mới biết.
Tham số bảng dò của hàm Match là array 6 phần tử. Tức là trị trả về 1~6. Choose chỉ cho chọn đến 5. Khi gặp 6 thì sẽ bị lỗi. (xem bài #11)

Ở bài #3 tôi dùng names không phải để đùa. Vì bài này không có bảng phụ để dò cho nên các names kia là để thay thế bảng phụ. Names được load vào bảng tính trước cho nên hiệu quả hơn biểu thức nằm trong công thức.
Hàm VLookup hiệu quả hơn hàm Choose. Thà bạn dùng Index+Match còn hơn.
 
Lần chỉnh sửa cuối:
Công thức này có lỗi thuộc loại không hiển hiện. Một ngày đẹp trời nào đó mới biết.
Tham số bảng dò của hàm Match là array 6 phần tử. Tức là trị trả về 1~6. Choose chỉ cho chọn đến 5. Khi gặp 6 thì sẽ bị lỗi. (xem bài #11)

Ở bài #3 tôi dùng names không phải để đùa. Vì bài này không có bảng phụ để dò cho nên các names kia là để thay thế bảng phụ. Names được load vào bảng tính trước cho nên hiệu quả hơn biểu thức nằm trong công thức.
Hàm VLookup hiệu quả hơn hàm Choose. Thà bạn dùng Index+Match còn hơn.

Dạ, em chân thành cảm ơn lời góp ý của bác ạ.

Em đã chỉnh lại công thức là

IFERROR(IF(MATCH(A4,{"NGA","MY","NAM","MINH"},0),CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%),""),CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,3%,4%,7%,10%))

Mặc dù công thức trên em vẫn thấy trả ra kết quả đúng như ý tác giả nhưng em có thắc mắc rất mong bác hỗ trợ giải thích giúp em với ạ.

Em ko hiểu tại sao công thức này không trả ra kết quả luôn( trực tiếp ) IF(MATCH(A4,{"NGA","MY","NAM","MINH"},0),CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%),CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,3%,4%,7%,10%)), do vậy em phải lồng thêm IFERROR để chữa lỗi và cũng để lồng thêm CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,3%,4%,7%,10%) thì mới ra kết quả đúng.

Bài này em không nghĩ đến dùng Name nên em mới dùng CHOOSE, theo em hiểu thì nếu dùng Name như bác hướng dẫn thì dùng Vlookup sẽ tiện hơn đúng ko ạ, nhưng nếu không dùng Name thì liệu có dùng được Vlookup được không bác, em chỉ biết cách ko dùng Name mà phải dùng CHOOSE thôi ạ.

Một lần nữa chân thành cảm ơn những lời góp ý của bác, chúc bác một ngày nghỉ cuối tuần vui vẻ ạ.
 
Mặc dù công thức trên em vẫn thấy trả ra kết quả đúng như ý tác giả nhưng em có thắc mắc rất mong bác hỗ trợ giải thích giúp em với ạ.
Để tôi trả lời thay ông anh tôi về thắc mắc của bạn :)

Công thức của bạn hỏi:
IF( MATCH(A4,{"NGA","MY","NAM","MINH"},0) , CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%) , CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,3%,4%,7%,10%) )

Trong hàm IF( 'điều kiện', 'thỏa', 'không thỏa' )
- Vế 'điều kiện' (màu đỏ): một so sánh bất kỳ sao cho ra kết quả là: True/False; hoặc giá trị bằng 0/ hay giá trị khác 0.
- Nếu 'thỏa' (màu xanh dương): thì thực hiện câu lệnh nào đó.
- Nếu 'không thỏa' (màu xanh lá): thì thực hiện câu lệnh nào đó.

Vế 'điều kiện' trong câu lệnh của bạn là: MATCH(A4,{"NGA","MY","NAM","MINH"},0)
Công thức này chỉ trả về các giá trị sau: 1, 2, 3, 4 tương ứng với vị trí thứ tự trong danh sách tên bạn đã liệt kê, và báo lỗi #N/A khi không có tên muốn tìm khớp với danh sách này, tức khi tìm thấy khớp tên, Match() sẽ trả về giá trị khác 0 ('thỏa' điều kiện), do đó nó sẽ thực hiện công thức màu xanh dương. Nếu không khớp tên, thì Match() báo lỗi #N/A và thoát ra IF(). Không bao giờ nó trả ra giá trị 0 ('không thỏa' điều kiện) để mà thực hiện câu lệnh màu xanh lá của bạn.

Còn công thức bạn dùng Iferror( If() , Choose() ), bạn đã tách công thức màu xanh lá đưa vào vế thứ 2 của Iferror() rồi. Cho nên khi Match() trong If(), như ở trên đã nói, không khớp tên và báo lỗi #N/A, thì nó sẽ thực hiện vế thứ 2 của Iferror(), tức thực hiện công thức màu xanh lá.

Còn nhiều công thức khác để thực hiện bài này, vấn đề mà anh @VetMini muốn cảnh báo bạn là ở chỗ khung điều kiện của chủ thớt chưa hoàn chỉnh, cho nên bạn dùng công thức: CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%)
- Match() trả kết quả: 1,2,3,4,5,6 --> 6 cấp so khớp.
- Trong khi đó các vế trong Choose() thứ tự cần tương ứng chỉ có 5 cấp là: 0%,4%,6%,10%,15% không có giá trị cấp thứ 6!?, tức khi giá trị mua hàng của khách >= 10 triệu, thì sao bạn!? do Choose() không đưa ra giá trị cấp này để xử lý.

Hy vọng bạn tỏ tường.

 Thân
 
...
Bài này em không nghĩ đến dùng Name nên em mới dùng CHOOSE, theo em hiểu thì nếu dùng Name như bác hướng dẫn thì dùng Vlookup sẽ tiện hơn đúng ko ạ, nhưng nếu không dùng Name thì liệu có dùng được Vlookup được không bác, em chỉ biết cách ko dùng Name mà phải dùng CHOOSE thôi ạ.
Lưu ý là tôi dị ứng vói "ko"

Names không cần thiết lắm. Người ta dùng nó hầu hết vì lý do tiện lợi thôi. Ví dụ với buôn xuất nhâp cảng thì người ta đặt những cái name như TYGIAngay, TYGIAtaicho, TYGIAhopdong để chỉ hai con số tỷ giá trong ngày, tỷ giá ngay thời điểm, và tỷ giá áp dụng cho hợp đồng.
Khi đọc công thức, người quản lý sẽ mau hiểu hơn.

Những tay được coi là guru trong nghề Excel đều nhìn nhận rằng nếu viết có phương pháp, names giúp công thức chạy hiệu quả hơn.
Ví dụ như công thức của bạn dựng array để dò tên. Việc này có thể xảy ra cho tất các các công thức của cột dò tìm. Nếu array ấy là một hằng (không thay đổi) thì tôi dùng name. Name này được load với sheet hoặc workbook cho nên array đã có sẵn cho hàm tham chiếu liền.

IFError và hàm Match:
Bài #14 trên đã giải thích cách hoạt dộng.
Ở đây, tôi giới thiệu cho bạn một mẹo vặt:
Hàm Match dò chính xác thì luôn luôn có khả năng trả về #NA. Vì vậy, nếu cần thì la gói thẳng nó trong IfError:
IfError(Match(a, xxx, 0), trị gì đó)
Nói chung, cần bắt lỗi chỗ nào thì bắt ngay chỗ đó. Chứ bắt kiểu đại trà bao cả công thức trong IfError về sau sẽ gặp khó khăn.
 
Để tôi trả lời thay ông anh tôi về thắc mắc của bạn :)

Công thức của bạn hỏi:
IF( MATCH(A4,{"NGA","MY","NAM","MINH"},0) , CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%) , CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,3%,4%,7%,10%) )

Trong hàm IF( 'điều kiện', 'thỏa', 'không thỏa' )
- Vế 'điều kiện' (màu đỏ): một so sánh bất kỳ sao cho ra kết quả là: True/False; hoặc giá trị bằng 0/ hay giá trị khác 0.
- Nếu 'thỏa' (màu xanh dương): thì thực hiện câu lệnh nào đó.
- Nếu 'không thỏa' (màu xanh lá): thì thực hiện câu lệnh nào đó.

Vế 'điều kiện' trong câu lệnh của bạn là: MATCH(A4,{"NGA","MY","NAM","MINH"},0)
Công thức này chỉ trả về các giá trị sau: 1, 2, 3, 4 tương ứng với vị trí thứ tự trong danh sách tên bạn đã liệt kê, và báo lỗi #N/A khi không có tên muốn tìm khớp với danh sách này, tức khi tìm thấy khớp tên, Match() sẽ trả về giá trị khác 0 ('thỏa' điều kiện), do đó nó sẽ thực hiện công thức màu xanh dương. Nếu không khớp tên, thì Match() báo lỗi #N/A và thoát ra IF(). Không bao giờ nó trả ra giá trị 0 ('không thỏa' điều kiện) để mà thực hiện câu lệnh màu xanh lá của bạn.

Còn công thức bạn dùng Iferror( If() , Choose() ), bạn đã tách công thức màu xanh lá đưa vào vế thứ 2 của Iferror() rồi. Cho nên khi Match() trong If(), như ở trên đã nói, không khớp tên và báo lỗi #N/A, thì nó sẽ thực hiện vế thứ 2 của Iferror(), tức thực hiện công thức màu xanh lá.

Còn nhiều công thức khác để thực hiện bài này, vấn đề mà anh @VetMini muốn cảnh báo bạn là ở chỗ khung điều kiện của chủ thớt chưa hoàn chỉnh, cho nên bạn dùng công thức: CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%)
- Match() trả kết quả: 1,2,3,4,5,6 --> 6 cấp so khớp.
- Trong khi đó các vế trong Choose() thứ tự cần tương ứng chỉ có 5 cấp là: 0%,4%,6%,10%,15% không có giá trị cấp thứ 6!?, tức khi giá trị mua hàng của khách >= 10 triệu, thì sao bạn!? do Choose() không đưa ra giá trị cấp này để xử lý.

Hy vọng bạn tỏ tường.

 Thân
Đọc xong dễ hiểu hơn hẳn luôn, đúng là sư phụ :sun:. Mình cảm ơn mọi người rất nhiều ạ
Bài đã được tự động gộp:

Trong khi đó các vế trong Choose() thứ tự cần tương ứng chỉ có 5 cấp là: 0%,4%,6%,10%,15% không có giá trị cấp thứ 6!?, tức khi giá trị mua hàng của khách >= 10 triệu, thì sao bạn!? do Choose() không đưa ra giá trị cấp này để xử lý.
Mình có hỏi quản lý về trường hợp trên 10 triệu, thì vẫn trả mức cao nhất là 15% ạ, nhưng do người đánh máy và lỡ in rồi nên không chỉnh sửa.
Bài đã được tự động gộp:

Lưu ý là tôi dị ứng vói "ko"

Names không cần thiết lắm. Người ta dùng nó hầu hết vì lý do tiện lợi thôi. Ví dụ với buôn xuất nhâp cảng thì người ta đặt những cái name như TYGIAngay, TYGIAtaicho, TYGIAhopdong để chỉ hai con số tỷ giá trong ngày, tỷ giá ngay thời điểm, và tỷ giá áp dụng cho hợp đồng.
Khi đọc công thức, người quản lý sẽ mau hiểu hơn.

Những tay được coi là guru trong nghề Excel đều nhìn nhận rằng nếu viết có phương pháp, names giúp công thức chạy hiệu quả hơn.
Ví dụ như công thức của bạn dựng array để dò tên. Việc này có thể xảy ra cho tất các các công thức của cột dò tìm. Nếu array ấy là một hằng (không thay đổi) thì tôi dùng name. Name này được load với sheet hoặc workbook cho nên array đã có sẵn cho hàm tham chiếu liền.

IFError và hàm Match:
Bài #14 trên đã giải thích cách hoạt dộng.
Ở đây, tôi giới thiệu cho bạn một mẹo vặt:
Hàm Match dò chính xác thì luôn luôn có khả năng trả về #NA. Vì vậy, nếu cần thì la gói thẳng nó trong IfError:
IfError(Match(a, xxx, 0), trị gì đó)
Nói chung, cần bắt lỗi chỗ nào thì bắt ngay chỗ đó. Chứ bắt kiểu đại trà bao cả công thức trong IfError về sau sẽ gặp khó khăn.
Mình cảm ơn mọi người rất nhiều, nhờ mọi người giúp đỡ mình đã giải quyết được vấn đề rồi
 
Lần chỉnh sửa cuối:
Để tôi trả lời thay ông anh tôi về thắc mắc của bạn :)

Công thức của bạn hỏi:
IF( MATCH(A4,{"NGA","MY","NAM","MINH"},0) , CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%) , CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,3%,4%,7%,10%) )

Trong hàm IF( 'điều kiện', 'thỏa', 'không thỏa' )
- Vế 'điều kiện' (màu đỏ): một so sánh bất kỳ sao cho ra kết quả là: True/False; hoặc giá trị bằng 0/ hay giá trị khác 0.
- Nếu 'thỏa' (màu xanh dương): thì thực hiện câu lệnh nào đó.
- Nếu 'không thỏa' (màu xanh lá): thì thực hiện câu lệnh nào đó.

Vế 'điều kiện' trong câu lệnh của bạn là: MATCH(A4,{"NGA","MY","NAM","MINH"},0)
Công thức này chỉ trả về các giá trị sau: 1, 2, 3, 4 tương ứng với vị trí thứ tự trong danh sách tên bạn đã liệt kê, và báo lỗi #N/A khi không có tên muốn tìm khớp với danh sách này, tức khi tìm thấy khớp tên, Match() sẽ trả về giá trị khác 0 ('thỏa' điều kiện), do đó nó sẽ thực hiện công thức màu xanh dương. Nếu không khớp tên, thì Match() báo lỗi #N/A và thoát ra IF(). Không bao giờ nó trả ra giá trị 0 ('không thỏa' điều kiện) để mà thực hiện câu lệnh màu xanh lá của bạn.

Còn công thức bạn dùng Iferror( If() , Choose() ), bạn đã tách công thức màu xanh lá đưa vào vế thứ 2 của Iferror() rồi. Cho nên khi Match() trong If(), như ở trên đã nói, không khớp tên và báo lỗi #N/A, thì nó sẽ thực hiện vế thứ 2 của Iferror(), tức thực hiện công thức màu xanh lá.

Còn nhiều công thức khác để thực hiện bài này, vấn đề mà anh @VetMini muốn cảnh báo bạn là ở chỗ khung điều kiện của chủ thớt chưa hoàn chỉnh, cho nên bạn dùng công thức: CHOOSE(MATCH(B4,{0,1,5,10,50,100}*10^5+1,1),0%,4%,6%,10%,15%)
- Match() trả kết quả: 1,2,3,4,5,6 --> 6 cấp so khớp.
- Trong khi đó các vế trong Choose() thứ tự cần tương ứng chỉ có 5 cấp là: 0%,4%,6%,10%,15% không có giá trị cấp thứ 6!?, tức khi giá trị mua hàng của khách >= 10 triệu, thì sao bạn!? do Choose() không đưa ra giá trị cấp này để xử lý.

Hy vọng bạn tỏ tường.

 Thân
Dạ, em cảm ơn bác rất nhiều ạ, nhờ có sự hướng dẫn tận tình và chi tiết em đã hiểu thêm rất nhiều.

Chúc bạn luôn dồi dào sức khỏe, thành công và may mắn trong cuộc sống ạ.
Bài đã được tự động gộp:

Lưu ý là tôi dị ứng vói "ko"

Names không cần thiết lắm. Người ta dùng nó hầu hết vì lý do tiện lợi thôi. Ví dụ với buôn xuất nhâp cảng thì người ta đặt những cái name như TYGIAngay, TYGIAtaicho, TYGIAhopdong để chỉ hai con số tỷ giá trong ngày, tỷ giá ngay thời điểm, và tỷ giá áp dụng cho hợp đồng.
Khi đọc công thức, người quản lý sẽ mau hiểu hơn.

Những tay được coi là guru trong nghề Excel đều nhìn nhận rằng nếu viết có phương pháp, names giúp công thức chạy hiệu quả hơn.
Ví dụ như công thức của bạn dựng array để dò tên. Việc này có thể xảy ra cho tất các các công thức của cột dò tìm. Nếu array ấy là một hằng (không thay đổi) thì tôi dùng name. Name này được load với sheet hoặc workbook cho nên array đã có sẵn cho hàm tham chiếu liền.

IFError và hàm Match:
Bài #14 trên đã giải thích cách hoạt dộng.
Ở đây, tôi giới thiệu cho bạn một mẹo vặt:
Hàm Match dò chính xác thì luôn luôn có khả năng trả về #NA. Vì vậy, nếu cần thì la gói thẳng nó trong IfError:
IfError(Match(a, xxx, 0), trị gì đó)
Nói chung, cần bắt lỗi chỗ nào thì bắt ngay chỗ đó. Chứ bắt kiểu đại trà bao cả công thức trong IfError về sau sẽ gặp khó khăn.
Dạ vâng ạ, em đã làm theo sự hướng dẫn của bác và cũng đã hiểu ra rất nhiều.

Em chân thành cảm ơn sự giúp đỡ nhiệt tình của bác, chúc bác sức khỏe dồi, gặp nhiều may mắn ạ

Chân thành em cảm ơn bác rất nhiều.
 
nhưng do người đánh máy và lỡ in rồi nên không chỉnh sửa.
Cái vụ đổ thừa này nghe quen à nha!

- Vậy mốc để so chỉ cần {1,5,10,50}*10^5
- Các mức giá trị % là: {3,4,7,10}%/{4,6,10,15}%
- Phần nhỏ hơn mốc dùng Iferror()

Vài cách áp dụng:
1/ Dùng Vlookup() thì dùng bảng lập các mốc và giá trị % giảm. Dễ theo dõi và cập nhật điều chỉnh khi có yêu cầu cần thay đổi.

2/ Không dùng bảng lập, thì sử dụng Lookup(), hoặc Index(..., Match()), như sau: ô C4

=IFERROR(LOOKUP(B4,{1,5,10,50}*10^5,IF(OR(A4={"nga","my","nam","minh"}),{4,6,10,15},{3,4,7,10})%),"")

hoặc
=IFERROR(LOOKUP(B4,{1,5,10,50}*10^5,({3,4,7,10}+OR(A4={"nga","my","nam","minh"})*{1,2,3,5})%),"")

hoặc
=IFERROR(INDEX(IF(OR(A4={"nga","my","nam","minh"}),{4,6,10,15},{3,4,7,10})%,MATCH(B4,{1,5,10,50}*10^5)),"")

Thân
 

File đính kèm

  • EXAMPLE.xlsx
    10.4 KB · Đọc: 0
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom