Chuyển công thức thành hàm UDF Vba

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

hongphuong1997

Thành viên tiêu biểu
Tham gia
12/11/17
Bài viết
771
Được thích
321
Giới tính
Nữ
Cháu có công thức như sau:
(=MOD($E$24-$D$24;5)&MOD($E$24-$C$24;5)&","&MOD($D$24+$F$24;5)&MOD($C$24-$F$24;5)&","&MOD($D$24-$G$24;5)&MOD($C$24+$G$24;5)&","&MOD($D$24-$G$24;5)&MOD($C$24-$F$24;5)&","&MOD($D$24+$F$24;5)&MOD($C$24+$G$24;5))
Cháu đã mầy mò viết macro như sau mừ nó không chạy, vậy khính mong các bác cùng các anh chị giúp đỡ ạ.
Cháu xin cảm ơn ạ.

Mã:
Function MyCustomFunction(D24 As Range, E24 As Range, C24 As Range, F24 As Range, G24 As Range) As String
    Dim part1 As String, part2 As String, part3 As String, part4 As String, part5 As String
    
    ' Tính từng phần của công thức MOD và ghép chúng lại
    part1 = WorksheetFunction.Mod(E24.Value - D24.Value, 5) & WorksheetFunction.Mod(E24.Value - C24.Value, 5)
    part2 = WorksheetFunction.Mod(D24.Value + F24.Value, 5) & WorksheetFunction.Mod(C24.Value - F24.Value, 5)
    part3 = WorksheetFunction.Mod(D24.Value - G24.Value, 5) & WorksheetFunction.Mod(C24.Value + G24.Value, 5)
    part4 = WorksheetFunction.Mod(D24.Value - G24.Value, 5) & WorksheetFunction.Mod(C24.Value - F24.Value, 5)
    part5 = WorksheetFunction.Mod(D24.Value + F24.Value, 5) & WorksheetFunction.Mod(C24.Value + G24.Value, 5)
    
    ' Ghép các phần lại thành chuỗi kết quả
    MyCustomFunction = part1 & "," & part2 & "," & part3 & "," & part4 & "," & part5
End Function
 
Bạn cần đọc hết và đọc kỹ.
Hihi..... cháu bị nhầm bác oi.
Cú pháp của hàm như này bác oi
=MyCustomFunction(a1;b1;c1;d1;e1)
Hoặc là các ô rời rạc đều được hết

"Tên hàm cũng phải ngắn gọn và có ý nghĩa theo nhu cầu tính toán. Đặt tên MyCustomFunction thì biết hàm dùng làm gì? Rồi khi có nhu cầu viết hàm mới chắc lại đặt tên hàm là MyCustomFunction2, MyCustomFunction3 hay sao?"
Đúng roài bác oi.
 
Upvote 0
Hihi..... cháu bị nhầm bác oi.
Bài nhầm và bài sau khi sửa nhầm y chang nhau.
Vấn đề là tôi chỉ gợi ý chứ không bắt buộc. Nếu liền kề thì thế này, nếu rời rạc thì thế kia. Bạn muốn có cả rời rạc thì "thế kia", cãi gì nữa? Tôi nói "hãy tưởng tượng" chứ tôi có nói "đừng" đâu? Thường tôi viết từng chữ đều có ý nghĩa.
 
Upvote 0
Bài nhầm và bài sau khi sửa nhầm y chang nhau.
Vấn đề là tôi chỉ gợi ý chứ không bắt buộc. Nếu liền kề thì thế này, nếu rời rạc thì thế kia. Bạn muốn có cả rời rạc thì "thế kia", cãi gì nữa? Tôi nói "hãy tưởng tượng" chứ tôi có nói "đừng" đâu? Thường tôi viết từng chữ đều có ý nghĩa.
Cháu muốn làm việc trên các ô đa dạng, vừa liền kề và rời rạc bác oi.
 
Upvote 0
Bạn cần đọc hết và đọc kỹ.
Thớt đã bước vào vũng lầy tham số hàm/sub rồi.
Cái này hết sức rắc rối và hoàn toàn nằm ngoài tầm vực vủa thớt. Ngày xưa có một mót thích nó lắm, nhưng mót này có lẽ chia tay PGE mấy năm tồi.

Đây là công việc điển hình của ParamArray.
Hàm phải nhận đủ số tham qua array.
Nếu phần tử chứa range lớn hơn 1 cell thì phải đếm đủ.
Đếm như thế nào thì là thỏa hợp giữa người viết code và người yêu cầu. Ví dụ:
Function MyBemusedFunction(Paramarray myPerplexdRange As Variant)
Gọi hàm: = MyBemusedFunction(A1:E1, C1, B1)
Thì bên trong hàm tách range ra sao?
- từ A đến E là đủ 5 cells. Bỏ rơi C1, B1
- hay là đếm rg1 (A1:E1), rg2 (C1), rg3 (B1) được 3 ranges. Như vậy chỉ cần lấy 3 cells trong rg1 là đủ số?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom