Dùng hàm Switch trong VBA

Liên hệ QC

duonghien300689

Thành viên mới
Tham gia
26/1/19
Bài viết
5
Được thích
2
Chào mọi người
Mọi người cho mình hỏi xíu, ai biết xin hướng dẫn giùm mình xíu. Thanks!
Vì hàm IF chỉ cho phép lặp lại 8 lần, mà dữ liệu của mình có quá nhiều hàng nên không thể sử dụng hàm IF. Mình có tham khảo mọi người hướng dẫn sử dụng hàm Switch (code vba) trong excel nhưng mình không biết viết nên ai biết thì hướng dẫn giùm mình với
Ví dụ mình có bảng dữ liệu như bên dưới, giá trị mình cần tìm là ngày tương ứng với giá trị cần so sánh. Ví dụ như SUM(AH$25:AH26) nhỏ hơn giá trí ở cột AQ thì sẽ trả về ngày tương ứng ở cột AP, nhưng vì ngày nhập hàng quá nhiều nên mình không thể sử dụng toàn bộ bằng hàng if được.

1548508281022.png
 
Lookup được với điều kiện sắp thứ tự và dữ liệu không trùng. Cột AQ đang có những giá trị giống nhau nhưng lại muốn trả về kết quả khác nhau lấy trên cột AP
 
vì là máy công ty nên không thể muốn cài gì thì cài, nếu máy ở nhà thì mình đã đổi bộ office rồi, mọi người ơi help giùm mình với
 
Cột AP dòng 2,3,4 có 1/22, 1/24,1/25
Cột AQ dòng 2,3,4 có 53802,53802,53802
Trường hợp giá trị cần tìm nhỏ hơn 53802 thì giá trị trả về là: 1/22?, 1/24? hay 1/25 ?
 
Cột AP dòng 2,3,4 có 1/22, 1/24,1/25
Cột AQ dòng 2,3,4 có 53802,53802,53802
Trường hợp giá trị cần tìm nhỏ hơn 53802 thì giá trị trả về là: 1/22?, 1/24? hay 1/25 ?
Trong trường hợp dùng If này thì nếu giá trị nhỏ hơn 53802 nó sẽ trả về 1/22, còn nếu là 53810 chẳng hạn thì đều không phải 1/22, 1/24, 1/25 mà sẽ trả về 01/28
 
Mình là người đầu tiên & chắc cũng đang là người cuối cùng xài hàm Switch()
Nhưng vấn đề của bạn chỉ có thể giải quyết 1 khi đưa file giả lập lên
Cái ảnh đó ờ #01 nên bỏ đi!
 
Chào mọi người
Mọi người cho mình hỏi xíu, ai biết xin hướng dẫn giùm mình xíu. Cảm ơn!
Vì hàm IF chỉ cho phép lặp lại 8 lần, mà dữ liệu của mình có quá nhiều hàng nên không thể sử dụng hàm IF. Mình có tham khảo mọi người hướng dẫn sử dụng hàm Switch (code vba) trong excel nhưng mình không biết viết nên ai biết thì hướng dẫn giùm mình với
Ví dụ mình có bảng dữ liệu như bên dưới, giá trị mình cần tìm là ngày tương ứng với giá trị cần so sánh. Ví dụ như SUM(AH$25:AH26) nhỏ hơn giá trí ở cột AQ thì sẽ trả về ngày tương ứng ở cột AP, nhưng vì ngày nhập hàng quá nhiều nên mình không thể sử dụng toàn bộ bằng hàng if được.

View attachment 211670
AQ25 =INDEX($AP$2:$AP$14,IFERROR(MATCH(SUM(AH$25:AH25),AQ$2:AQ$14-10^-10)+1,1),)
Nhấn Ctrl+Shift+Enter
 
Lần chỉnh sửa cuối:
Chào mọi người
Mọi người cho mình hỏi xíu, ai biết xin hướng dẫn giùm mình xíu. Cảm ơn!
Vì hàm IF chỉ cho phép lặp lại 8 lần, mà dữ liệu của mình có quá nhiều hàng nên không thể sử dụng hàm IF. Mình có tham khảo mọi người hướng dẫn sử dụng hàm Switch (code vba) trong excel nhưng mình không biết viết nên ai biết thì hướng dẫn giùm mình với
Ví dụ mình có bảng dữ liệu như bên dưới, giá trị mình cần tìm là ngày tương ứng với giá trị cần so sánh. Ví dụ như SUM(AH$25:AH26) nhỏ hơn giá trí ở cột AQ thì sẽ trả về ngày tương ứng ở cột AP, nhưng vì ngày nhập hàng quá nhiều nên mình không thể sử dụng toàn bộ bằng hàng if được.

Hàm Switch vì là hàm nên sẽ đòi hỏi các tham số tính ra đủ hết. Và vì vậy sẽ rất kém hiệu quả.
Trường hợp muốn viết hàm tự tạo để tránh IF bị giới hạn 8 lượt thì nên dùng IF-Then-ElseIf-...Else, cách này hiệu quả hơn.

Mình là người đầu tiên & chắc cũng đang là người cuối cùng xài hàm Switch()
...
Hàm Switch, cũng như khàm IIF, có nhiều giới hạn. Ngày xưa Access ra các hàm này là để giúp dễ viết mấy câu truy vấn SQL.
Ngày nay, mỗi lần muốn dùng hàm IIF thì phải suy nghĩ hiệu quả của nó. Switch thì lại càng khó khăn hơn; Select-Case hầu như có thể hoàn toàn thay thế nó.
 
Hàm Switch vì là hàm nên sẽ đòi hỏi các tham số tính ra đủ hết. Và vì vậy sẽ rất kém hiệu quả.
Trường hợp muốn viết hàm tự tạo để tránh IF bị giới hạn 8 lượt thì nên dùng IF-Then-ElseIf-...Else, cách này hiệu quả hơn.


Hàm Switch, cũng như khàm IIF, có nhiều giới hạn. Ngày xưa Access ra các hàm này là để giúp dễ viết mấy câu truy vấn SQL.
Ngày nay, mỗi lần muốn dùng hàm IIF thì phải suy nghĩ hiệu quả của nó. Switch thì lại càng khó khăn hơn; Select-Case hầu như có thể hoàn toàn thay thế nó.
Ở GPE này đa số code có số dòng (số ký tự) ngắn là tốt, nên đâu quan tâm việc bác đề cập switch đứng về mặt ngắn này thì là nhất
 
Vậy chắc phải có file dữ liệu mới biết nên lôi hàm nào ra mà xài, nhỉ?
 
Ở GPE này đa số code có số dòng (số ký tự) ngắn là tốt, nên đâu quan tâm việc bác đề cập switch đứng về mặt ngắn này thì là nhất
Nhiều lúc tôi cũng đặt câu hỏi tại sao các vị ở GPE đây cứ bám mãi với Windows.
Đổi qua Unix/Linux tha hồ mà trổ tài rút ngắn câu lệnh. Nó thích hợp luôn với cả những vị thích dùng công thức khủng.
 
Web KT
Back
Top Bottom