excel的vba编程时,如何让输入的参数是好几个连续的单元格?

我想用excel编程,可是需要的参数真的是太多了,我想使用自己一选就可以选中一片单元格的方式,把连续的单元格当成一个参数.比如我想编写一个求平方和的vba函数,假设函数名... 我想用excel编程,可是需要的参数真的是太多了,我想使用
自己一选就可以选中一片单元格的方式,把连续的单元格当成一个参数.
比如我想编写一个求平方和的vba函数,假设函数名是pfh,
参数分别是A1,B1,C1,D1,如果我要求平方和的话,我只需要在E1中输入
=pfh(A1,B1,C1,D1)
但是,如果参数很多的话,这样输入是很累的,
我想要的效果是
=pfh(A1:D1)然后就得到结果,请问这样的函数如何写呢?
展开
 我来答
pepe3399
推荐于2016-06-04 · 知道合伙人软件行家
pepe3399
知道合伙人软件行家
采纳数:1259 获赞数:5941
1988年毕业于苏州市职业大学计算机专业 从事软件开发5年 从事生产管理20年

向TA提问 私信TA
展开全部

设置参数为range类型,即可以表示连续的区域。举例说明:

做一个自定义函数,该函数的参数为一个区域,结果输出为区域中的数值之和。

自定义函数的代码如下:

Function myf(a As Range)

Dim b As Variant

myf = 0

For Each b In a

myf = myf + b.Value

Next

End Function

使用该自定义函数结果如图:

太极健1969
推荐于2016-01-12 · TA获得超过9030个赞
知道大有可为答主
回答量:8668
采纳率:69%
帮助的人:3580万
展开全部
Function Pfh(Rng As Range)
Dim Rng1 As Range
Dim k
For Each Rng1 In Rng
k = k + Rng1 ^ 2
Next
Pfh = k
End Function

把代码写到模块中
以下代码还可以忽略非数字
Function Pfh(Rng As Range)
Dim Rng1 As Range
Dim k
For Each Rng1 In Rng
If IsNumeric(Rng1) Then k = k + Rng1 ^ 2
Next
Pfh = k
End Function
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小新De和尚头
2012-12-25 · TA获得超过620个赞
知道小有建树答主
回答量:711
采纳率:50%
帮助的人:339万
展开全部
public function 平方和(rng as range)
for each rng in selection
s=s+rng*rng

next
平方和=s
end function
更多追问追答
追问
是不是只要定义变量是range就可以了?如果rng是四个连续的单元格,那么如何把单元格第一个内容赋值给变量a,第二个赋值给b,第三个赋值给c,第四个赋值给d呢?在自定义函数中应该如何写呢?谢谢
追答
Public Function pfh(rng As Range)
Dim c
For Each c In rng
s = s + c * c
Next
pfh = s
End Function

你用这个,之前那个写错了!!
还有我解释一下,你定义变量range之后,下面的语句是对这个变量做一个循环,循环的区域就是你选择的区域,所以不用再一个一个给他赋值了!
循环以后就会自动的把每个值运算一遍。懂么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Flipzd
2012-12-25 · TA获得超过562个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:403万
展开全部
=pfh(A1,i), i代表单元格个数
追问
那如果是求A1,B1,C1的平方和,也能这么做吗?
追答
楼上的Range更好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式