作者home0303 (Blue night)
看板Office
标题[算表] Excel自订函数无法立即更新
时间Tue May 7 11:15:51 2019
软体:EXCEL
版本:2010
自订一个函数类似VLOOKUP 但可以回传所有符合结果
Function MatchAll(储存格, 查询范围, 向右位移)
For Each cell In 查询范围
If cell = 储存格 Then MatchAll = MatchAll & "_" & cell.Offset(0, 向右位移
).Value
Next
If MatchAll = "" Then MatchAll = Application.Match(1, 2, 0): Exit Function
MatchAll = Mid(MatchAll, 2, Len(MatchAll))
End Function
举例说明:
1 a
1 b
1 c
2 d
3 e
初步使用 =MatchAll(1,A1:A5,1)
是可以回传 a_b_c 的确是我要的结果
把A4改成 1 也会变成 a_b_c_d
但如果我再把B1改成 f
函数并不会第一时间改成 f_b_c_d
我必须在函数储存格重新执行才会回传f_b_c_d
(连按F9也没用)
是否因为我自订的第3个引数是位移而非结果范围
导致结果范围资料改变函数却不立即运算
而查询范围的改变会立即触发运算
若是如此 请问该如何修正
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.202.69.28
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1557198953.A.48E.html
1F:→ soyoso: 加上application.volatile 05/07 11:21
2F:→ home0303: 谢谢S大 请问若不将Volatile调回False 会造成其他自订 05/07 11:42
3F:→ home0303: 函数也一律重新计算吗 05/07 11:43
4F:→ soyoso: 这方面可以原文function另设个名称来测试,测试上如果没加 05/07 12:15
5F:→ soyoso: 上application.volatile或设为false的function,再修改a,b 05/07 12:15
6F:→ soyoso: ,c,d,e上是不会变更结果的。但如果function所设参照的引数 05/07 12:15
7F:→ soyoso: 值(a1:a5)改变时则都会重新计算。 05/07 12:15
8F:→ home0303: 了解 谢谢S大 05/07 13:40