[算表] 自訂函數必須來源資料重算才能執行

看板Office作者 (Blue night)時間5年前 (2020/11/17 00:57), 編輯推噓0(0010)
留言10則, 2人參與, 5年前最新討論串1/1
軟體: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://www.ptt.cc/bbs/Office/M.1605545853.A.78E.html

11/17 07:13, 5年前 , 1F
Cells(首列, 首欄) 改 範圍.Cells(1,1)
11/17 07:13, 1F

11/17 07:18, 5年前 , 2F

11/17 19:34, 5年前 , 3F
謝S大 但我好奇為什麼原寫法需要在工作表1重新輸入
11/17 19:34, 3F

11/17 19:34, 5年前 , 4F
才會正確地執行
11/17 19:34, 4F

11/18 00:16, 5年前 , 5F
測試,a1:a10編輯或修改資料後會觸發自訂函數重新運算,這
11/18 00:16, 5F

11/18 00:16, 5年前 , 6F
時作用工作表是工作表1,變數第一格會是工作表1的儲存格;
11/18 00:16, 6F

11/18 00:16, 5年前 , 7F
如果於工作表2,作用工作表是工作表2,變數第一格會是工作
11/18 00:16, 7F

11/18 00:16, 5年前 , 8F
表2的儲存格。因此需明確指定以工作表1(變數"範圍")的儲存
11/18 00:16, 8F

11/18 00:17, 5年前 , 9F
11/18 00:17, 9F

11/18 15:45, 5年前 , 10F
懂了 謝謝S大解說
11/18 15:45, 10F
文章代碼(AID): #1VigzzUE (Office)
文章代碼(AID): #1VigzzUE (Office)