Xin nguyên mẫu của hàm.

Liên hệ QC

truongvu317

Thành viên tích cực
Tham gia
15/11/10
Bài viết
935
Được thích
678
Giới tính
Nữ
Chào các anh chị!

Em thấy mọi đối số của hàm SUMPRODUCT đều được ước lượng theo mảng, ví dụ SUMPRODUCT(A1:A10+1) thì A1:A10+1 luôn cộng theo quy tắc mảng bất kể là có nhấn ctrl+shift+enter. Trong vba em muốn tạo một hàm "function NewNew(a)as string" mà khi viết NewNew(A1:A10+1) nó sẽ tính tổng A1:A10+1 như trong trường hợp hàm sumproduct mà không phải nhấn ctrl+shift+enter. Vậy em xin các anh chị cho em hỏi hàm trên nên khai báo như thế nào?

Em xin cám ơn!-\\/.
 
Bạn nên viết cụ thể bài toán của bạn lên diễn đàn này.

Chưa chắc theo đường hướng SUMPRODUCT() là tối ưu đâu.

Mà có ai biết SumPro cái gì đâu mà viết hàm cho bạn kia chứ?!?
 
Mình đang cần viết một hàm tên là NewNew có một đối số, khi dùng trong excel viết là NewNew(a1:a10+1) thì excel sẽ tính a1:a10+1 theo quy tắc mảng và truyển kết quả mảng đó vào hàm NewNew. Nhưng không phải nhấn ctrl+shift+enter.

Mình chỉ muốn hỏi hàm đó nên khai báo như thế nào? còn nội dung hàm thì mình sẽ tự viết.}}}}}}}}}}}}}}}
 
Nếu viết hàm cho KQ là 1 vùng thì nguyên tắc vẫn phải gõ Ctrl - Shift - ENter.

Chỉ viết Sub thì không cần viết.
Có nguy hiểm là Sub cứ đưa kết quả ra, đè vô dữ liệu khác. Và phải dùng tay để chạy sub đó.

Nếu bạn đồng ý viết sub thì trả lời.
 
haonlh ơi, nếu viết sub thì sẽ phải gọi bằng tay, vả lại truyền tham số kiểu gì trong excel. Hàm mình định viết chỉ trả lại giá trị đơn thôi.**~****~****~**
 
Không lẽ không còn cách nào khác hả haonld? Sợ là như kiểu đem dao mổ trâu đi thịt chim.!$@!!!$@!!!$@!!!$@!!
 
Nếu là vật chất thật thì không nên "giết gà bằng dao mổ trâu". Đây là tư duy. Cứ nghĩ và làm để nâng dần năng lực.

Ơ, tôi nghĩ cái câu "đem dao mổ trâu đi thịt chim" là chủ thớt muốn thiến heo chứ đâu phải làm gà.
 
Mình đang cần viết một hàm tên là NewNew có một đối số, khi dùng trong excel viết là NewNew(a1:a10+1) thì excel sẽ tính a1:a10+1 theo quy tắc mảng và truyển kết quả mảng đó vào hàm NewNew. Nhưng không phải nhấn ctrl+shift+enter.

Mình chỉ muốn hỏi hàm đó nên khai báo như thế nào? còn nội dung hàm thì mình sẽ tự viết.}}}}}}}}}}}}}}}

Bạn khai báo như vầy đi
Public Function NewNew(Rng As Range, Num As Double)
'...................
End Function
Rng = A1:A10, Num = số +1 hay gì đó. Không thể chỉ 1 đối số Rng=A1:A10+1
 
Như trong hình mình viết là =NewNew(b21:b22+1)

thì "bienso" nhận giá trị lỗi, mình muốn hỏi làm sao để trong trường hợp kia "bienso" nhận giá trị là mảng {2;3} mà không cần nhấn ctrl+shift+enter.eeee.jpg
 
Lần chỉnh sửa cuối:
Không hiểu hàm SUMPRODUCT làm kiểu gì nhỉ?
Mình chỉ nêu hướng của mình thôi. Trong hàm bạn khai báo biến s kiểu String, dùng lệnh s=application.caller.formula để nhận chuỗi "=newnew(b21:b22+1)" rồi tách thủ công chuỗi s được b21:b22 đưa vào range và số 1.
 
Không hiểu hàm SUMPRODUCT làm kiểu gì nhỉ?
Mình chỉ nêu hướng của mình thôi. Trong hàm bạn khai báo biến s kiểu String, dùng lệnh s=application.caller.formula để nhận chuỗi "=newnew(b21:b22+1)" rồi tách thủ công chuỗi s được b21:b22 đưa vào range và số 1.
Cảm ơn bạn đã suy nghĩ giúp mình. Hướng làm của bạn sẽ giải quyết được trường hợp đơn lẻ như trong hình, nếu tổng quát hóa như NEWNEW(NewNew(a1:a10+1)) thì sẽ rất khó.}}}}}}}}}}}}}}}}}}}}
 
Web KT
Back
Top Bottom