永发信息网

EXCEL VBA 自定义函数

答案:3  悬赏:40  手机版
解决时间 2021-03-01 16:16
Function pbs(rng As Range) '输入变量是一个单元格
Application.Volatile
a = Cells(rng.Row, 1).Value '查找输入单元格同行的第一个单元格的值为a
b = Cells(1, rng.Column).Value * 1 ‘查找输入单元格同列的第一个单元格的值为b
c = Application.Match(a, Sheets("BOM").Columns(1), 0)’在另一个工作表上查找与a匹配的行数c
d = Application.Match(b, Sheets("PBS-OUT").Rows(1), 0)’在另一个工作表上查找与a匹配的列数d
With Sheets("BOM")
rng1 = .Range(.Cells(c, 4), .Cells(c, .Cells(c, .Columns.Count).End(xlToLeft).Column))
End With'取另一个工作表匹配列外的整行(非空白)
With Sheets("PBS-OUT")
rng2 = .Range(.Cells(2, d), .Cells(.Cells(.Rows.Count, d).End(xlUp).Row, d))
End With‘取另一个工作表匹配行外的整列(非空白)
pbs = Application.MMult(rng1, rng2)’计算乘积求和

我的问题是rng1 和 rng2 是根据 输入变量rng变动的,实际其他表上的符合rng1的数据变更时,函数无法自动计算显示错误,应如何修改
最佳答案
你的自定义函数易失性函数,不会自动更新,你只要在使用函数的公式后面加上强制更新的东西就行了
比如你的公式的结果是文本型的,那么
=pbs()&T(NOW())
比如你的公式的结果是数值型的,那么
=pbs()+N(T(NOW()))
就能强制自动更新
至于rng1和rng2,楼主试试用range的方式,也就是set rng1=range(xxxxxx)
全部回答
public function yang(r as range) as single dim k as range dim i as single for each k in r if k.value <> "" then i = i + k next k yang = i end function range(r)改成r
=SUMPRODUCT(B1:B7,C1:C7) 这个可以满足吧 平均算法 Public Function AVERAGEx(x As Range, y As Range) Dim m For i = 0 To x.Count - 1 If Cells(y.Row + i, y.Column).Value <> 0 Then m = m + Cells(x.Row + i, x.Column).Value End If Next AVERAGEx = m End Function 这是自定义函数,试试吧 求采纳为满意回答。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么优酷的欧美电影都是翻译成汉语的 想看
我是丽江市永胜县人,已经毕业,可以不在永胜
破壁技术料理机真的对健康有好处吗?
新名剪造型NO.5地址在什么地方,想过去办事
湖南邵阳社保局电话是多少
永乐英雄儿女中梦如是谁演的
一米六大的玩具熊有多重
请问,避水珠如何用?,
外语专业比较好的211或985院校有哪些?
筑梦星园小区地址有知道的么?有点事想过去
破处后不来月经
红锦莲酒家地址在什么地方,想过去办事
宁波格兰云天租房贵吗?
【蔡高厅】高等数学蔡高厅不定积分大约是哪一
怪物猎人2G王凯玉与真铠玉在哪里拿?到G级我
推荐资讯
怎么分清楚亲戚之间的关系和称呼吖?
用光彩夺目造句应怎么写
如图,O是△ABC内任一点,A'B'C'分别是OA,OB,OC
下列物质的用途,主要利用其化学性质的是BA.
王者荣耀马可波罗什么时候出正服
【冇怎么读】“冇”怎么读?这个字怎么读?
开学典礼上要穿校服吗?
一种商品的广告语是“大家好,才是真的好”。
svg 如何填充四条直线组成区域颜色?
小学美术老师应怎样上课?
宝泉岭管理局梧桐河农场综合维稳中心地址在什
健君整脊按摩我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?