作者home0303 (Blue night)
看板Office
标题[算表] 自订函数必须来源资料重算才能执行
时间Tue Nov 17 00:57:31 2020
软体:EXCEL
版本:2010
自订函数如下:
Function ShowOnly(范围, 第几个)
首栏 = 范围.Column: 首列 = 范围.Row
Set 第一格 = Cells(首列, 首栏)
For Each cell In 范围
计数 = 计数 + 1
出场 = Application.CountIf(Range(第一格, 第一格.Offset(计数 - 1)), cell)
If 出场 = 1 Then 真的数 = 真的数 + 1
If 真的数 = 第几个 Then ShowOnly = cell: Exit Function
Next
If ShowOnly = 0 Then ShowOnly = "Not Available": Exit Function
End Function
说明:
这是类似UNIQUE函数的自订函数 目的是输出不重复项目
举例 在工作表1 A1:A10分别为 A、B、C、B、C、D、D、E、F、G
则 B1 = ShowOnly($A$1:$A$10, ROW(A1)) = A
B1 以下复制 B2:B7 则为 B C D E F G
现在发现的问题是在同一工作表中执行没问题 但如果自订函数写在别的工作表
例如工作表2 B1 = ShowOnly(工作表1!$A$1:$A$10,ROW(A1))
都会先出现 Not Available 直到回到工作表1重新输入後
才会正确执行
请问原因为何
我试着在开头加上 Application.Volatile 结果仍然一样
请赐教 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.155.251 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1605545853.A.78E.html
1F:→ soyoso: Cells(首列, 首栏) 改 范围.Cells(1,1) 11/17 07:13
3F:→ home0303: 谢S大 但我好奇为什麽原写法需要在工作表1重新输入 11/17 19:34
4F:→ home0303: 才会正确地执行 11/17 19:34
5F:→ soyoso: 测试,a1:a10编辑或修改资料後会触发自订函数重新运算,这 11/18 00:16
6F:→ soyoso: 时作用工作表是工作表1,变数第一格会是工作表1的储存格; 11/18 00:16
7F:→ soyoso: 如果於工作表2,作用工作表是工作表2,变数第一格会是工作 11/18 00:16
8F:→ soyoso: 表2的储存格。因此需明确指定以工作表1(变数"范围")的储存 11/18 00:16
9F:→ soyoso: 格 11/18 00:17
10F:→ home0303: 懂了 谢谢S大解说 11/18 15:45