看板 Office 關於我們 聯絡資訊
軟體: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
soyoso: Cells(首列, 首欄) 改 範圍.Cells(1,1) 11/17 07:13
soyoso: https://i.imgur.com/CDJw1uR.gif 11/17 07:18
home0303: 謝S大 但我好奇為什麼原寫法需要在工作表1重新輸入 11/17 19:34
home0303: 才會正確地執行 11/17 19:34
soyoso: 測試,a1:a10編輯或修改資料後會觸發自訂函數重新運算,這 11/18 00:16
soyoso: 時作用工作表是工作表1,變數第一格會是工作表1的儲存格; 11/18 00:16
soyoso: 如果於工作表2,作用工作表是工作表2,變數第一格會是工作 11/18 00:16
soyoso: 表2的儲存格。因此需明確指定以工作表1(變數"範圍")的儲存 11/18 00:16
soyoso: 格 11/18 00:17
home0303: 懂了 謝謝S大解說 11/18 15:45