Ưu nhược điểm của hàm tùy chỉnh trong Excel

  • Chia Sẻ Cái Này
Michael Brown

Chúng tôi đang tiếp tục loạt bài hướng dẫn về các chức năng do người dùng xác định. Trong các bài viết trước, chúng ta đã làm quen với các chức năng tùy chỉnh và học cách tạo và sử dụng chúng. Trong hướng dẫn này, chúng ta sẽ xem xét các chi tiết cụ thể của việc sử dụng các chức năng này và xem sự khác biệt giữa macro UDF và VBA.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu những điều sau:

    Chúng tôi hy vọng bài viết này sẽ nâng cao kiến ​​thức của bạn về UDF và giúp bạn sử dụng chúng hiệu quả hơn nữa trong sổ làm việc Excel của mình.

    UDF và Macro có giống nhau không?

    Cả hàm do người dùng xác định và VBA macro được tạo bằng trình soạn thảo VBA. Sự khác biệt giữa chúng là gì và ưu tiên cho cái gì?

    Sự khác biệt quan trọng nhất là hàm thực hiện phép tính và macro thực hiện một số hành động. Một hàm do người dùng xác định, giống như một hàm Excel thông thường, phải được viết trong một ô. Do quá trình thực thi của nó, ô trả về một số giá trị. Đồng thời, không thể thay đổi giá trị của các ô khác, cũng như một số thuộc tính của ô hiện tại (cụ thể là định dạng). Tuy nhiên, bạn có thể sử dụng hàm tùy chỉnh trong các công thức định dạng có điều kiện.

    Macro UDF và VBA hoạt động theo những cách khác nhau. Ví dụ: khi bạn tạo một UDF trong Visual Basic Editor, bạn bắt đầu bằng một câu lệnh Hàm và kết thúc bằng một Hàm kết thúc . Khi bạn ghi một macro, bạn bắt đầu với mộtcâu lệnh Sub và kết thúc bằng End Sub.

    Không phải tất cả các toán tử Visual Basic đều có thể được sử dụng để tạo UDF. Vì lý do này, macro là một giải pháp linh hoạt hơn.

    Macro không yêu cầu người dùng chuyển bất kỳ đối số nào (cũng như không thể chấp nhận bất kỳ đối số nào), không giống như hàm do người dùng xác định.

    Vấn đề là một số lệnh của macro có thể sử dụng địa chỉ ô hoặc thành phần định dạng (ví dụ: màu sắc). Nếu bạn di chuyển ô, thêm hoặc bớt hàng và cột, thay đổi định dạng của ô, thì bạn có thể dễ dàng "phá vỡ" các macro của mình. Điều này đặc biệt có thể xảy ra nếu bạn chia sẻ tệp của mình với những đồng nghiệp không biết cách thức hoạt động của macro.

    Ví dụ: bạn có một tệp có macro hoạt động hoàn hảo. Công thức này tính tỷ lệ phần trăm của ô A1 đến A4. Macro thay đổi màu của các ô này thành màu vàng. Định dạng phần trăm được đặt trong ô hiện hoạt.

    Nếu bạn hoặc ai đó quyết định chèn một hàng mới, macro sẽ tiếp tục tìm kiếm giá trị trong ô A4 ( tham số 4,1 trong UDF của bạn), không thành công và trả về lỗi:

    Trong trường hợp này, lỗi xảy ra do chia cho 0 (không có giá trị trong giá trị mới được thêm vào hàng ngang). Trong trường hợp macro thực hiện, giả sử, tính tổng, thì bạn sẽ nhận được kết quả sai. Nhưng bạn sẽ không biết về nó.

    Ngược lại với macro, các chức năng do người dùng xác định không thể gây ra tình huống khó chịu như vậy.

    Dưới đây, bạn sẽ thấy hiệu suất củacác tính toán tương tự bằng cách sử dụng UDF. Tại đây, bạn có thể chỉ định các ô nhập liệu ở bất kỳ đâu trong trang tính và bạn sẽ không gặp phải bất kỳ sự cố không mong muốn nào khi thay đổi nó.

    Tôi đã viết công thức sau trong C3:

    =UDF_vs_Macro(A1,A4)

    Sau đó, tôi đã chèn một hàng trống và công thức đã thay đổi như bạn có thể thấy trong ảnh chụp màn hình ở trên.

    Giờ đây, chúng ta có thể di chuyển một ô nhập liệu hoặc một ô có hàm ở bất kỳ đâu. Kết quả sẽ luôn chính xác.

    Một lợi ích khác của việc sử dụng UDF là chúng tự động cập nhật khi giá trị trong ô nhập thay đổi. Khi sử dụng macro, bạn phải luôn đảm bảo rằng tất cả dữ liệu đều được cập nhật.

    Hãy ghi nhớ ví dụ này, tôi muốn sử dụng UDF bất cứ khi nào có thể và chỉ sử dụng macro cho các hoạt động không tính toán khác.

    Hạn chế và nhược điểm của việc sử dụng UDF

    Tôi đã đề cập đến những ưu điểm của UDF ở trên. Tóm lại, nó có thể thực hiện các phép tính mà các hàm Excel tiêu chuẩn không thể thực hiện được. Ngoài ra, nó có thể lưu và sử dụng các công thức dài và phức tạp, biến chúng thành một hàm duy nhất. Và bạn sẽ không phải viết đi viết lại các công thức phức tạp.

    Bây giờ, hãy nói chi tiết hơn về những thiếu sót của UDF:

    • Việc tạo UDF yêu cầu sử dụng VBA. Không có cách nào xung quanh nó. Điều này có nghĩa là người dùng không thể ghi UDF theo cách giống như macro Excel. Bạn phải tự tạo UDF. Tuy nhiên, bạn có thể sao chép vàdán các phần của mã macro đã ghi trước đó vào hàm của bạn. Bạn chỉ cần lưu ý về những hạn chế của hàm tùy chỉnh.
    • Một nhược điểm khác của UDF là giống như bất kỳ hàm Excel nào khác, nó chỉ có thể trả về một giá trị hoặc một mảng giá trị trong một ô. Nó chỉ thực hiện các phép tính, không có gì khác.
    • Nếu bạn muốn chia sẻ sổ làm việc của mình với đồng nghiệp, hãy đảm bảo lưu các UDF của bạn trong cùng một tệp. Nếu không, các hàm tùy chỉnh của bạn sẽ không hoạt động với chúng.
    • Các hàm tùy chỉnh được tạo bằng trình chỉnh sửa VBA chậm hơn các hàm thông thường. Điều này đặc biệt đáng chú ý trong các bảng lớn. Thật không may, VBA là một ngôn ngữ lập trình rất chậm cho đến nay. Do đó, nếu bạn có nhiều dữ liệu, hãy cố gắng sử dụng các hàm tiêu chuẩn bất cứ khi nào có thể hoặc tạo UDF bằng cách sử dụng hàm LAMBDA.

    Giới hạn của hàm tùy chỉnh:

    • UDF là được thiết kế để thực hiện các phép tính và trả về một giá trị. Chúng không thể được sử dụng thay cho macro.
    • Chúng không thể thay đổi nội dung của bất kỳ ô nào khác (chỉ ô đang hoạt động).
    • Tên hàm phải tuân theo các quy tắc nhất định. Ví dụ: bạn không thể sử dụng tên khớp với tên hàm Excel gốc hoặc địa chỉ ô, chẳng hạn như AB123.
    • Hàm tùy chỉnh của bạn không được chứa khoảng trắng trong tên nhưng có thể bao gồm ký tự gạch dưới. Tuy nhiên, phương pháp ưa thích là sử dụng chữ in hoa ở đầu mỗi từ mới.từ (ví dụ: GetMaxBetween).
    • Một UDF không thể sao chép và dán các ô vào các vùng khác của trang tính.
    • Chúng không thể thay đổi trang tính đang hoạt động.
    • UDF không thể' t thay đổi định dạng trong ô hiện hoạt. Nếu bạn muốn thay đổi định dạng của ô khi hiển thị các giá trị khác nhau, bạn nên sử dụng định dạng có điều kiện.
    • Chúng không thể mở thêm sách.
    • Không thể sử dụng chúng để chạy macro bằng Application.OnTime .
    • Không thể tạo chức năng do người dùng xác định bằng trình ghi macro.
    • Các chức năng không xuất hiện trong Nhà phát triển > Hộp thoại Macros .
    • Các hàm của bạn sẽ xuất hiện trong hộp thoại ( Chèn > Hàm ) và trong danh sách các hàm chỉ khi chúng được khai báo là Công khai (đây là mặc định, trừ khi có ghi chú khác).
    • Mọi chức năng được khai báo là Riêng tư sẽ không xuất hiện trong danh sách tính năng.

    Hoạt động khá chậm , cũng như một số hạn chế khi sử dụng, có thể khiến bạn nghĩ: "Việc sử dụng các chức năng tùy chỉnh này là gì?"

    Chúng có thể hữu ích và hữu ích nếu chúng ta lưu ý đến các hạn chế áp đặt cho chúng. Nếu bạn học cách tạo và sử dụng UDF đúng cách, bạn có thể viết thư viện hàm của mình. Điều này sẽ mở rộng đáng kể khả năng làm việc với dữ liệu trong Excel của bạn.

    Đối với tôi, các hàm tùy chỉnh giúp tiết kiệm thời gian tuyệt vời. Còn bạn thì sao? Bạn đã thử tạo UDF của riêng mình chưa? Bạn có thích nó khôngtốt hơn các hàm Excel cơ bản? Hãy thảo luận về nó trong phần Nhận xét :)

    Michael Brown là một người đam mê công nghệ chuyên dụng với niềm đam mê đơn giản hóa các quy trình phức tạp bằng các công cụ phần mềm. Với hơn một thập kỷ kinh nghiệm trong ngành công nghệ, anh ấy đã trau dồi kỹ năng của mình trong Microsoft Excel và Outlook, cũng như Google Trang tính và Tài liệu. Blog của Michael dành để chia sẻ kiến ​​thức và chuyên môn của anh ấy với những người khác, cung cấp các mẹo và hướng dẫn dễ thực hiện để cải thiện năng suất và hiệu quả. Cho dù bạn là một chuyên gia dày dạn kinh nghiệm hay người mới bắt đầu, blog của Michael đều cung cấp những hiểu biết có giá trị và lời khuyên thiết thực để tận dụng tối đa những công cụ phần mềm thiết yếu này.