[算表] Excel自訂函數無法立即更新

看板Office作者 (Blue night)時間5年前 (2019/05/07 11:15), 編輯推噓0(008)
留言8則, 2人參與, 5年前最新討論串1/1
軟體: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://www.ptt.cc/bbs/Office/M.1557198953.A.48E.html

05/07 11:21, 5年前 , 1F
加上application.volatile
05/07 11:21, 1F

05/07 11:42, 5年前 , 2F
謝謝S大 請問若不將Volatile調回False 會造成其他自訂
05/07 11:42, 2F

05/07 11:43, 5年前 , 3F
函數也一律重新計算嗎
05/07 11:43, 3F

05/07 12:15, 5年前 , 4F
這方面可以原文function另設個名稱來測試,測試上如果沒加
05/07 12:15, 4F

05/07 12:15, 5年前 , 5F
上application.volatile或設為false的function,再修改a,b
05/07 12:15, 5F

05/07 12:15, 5年前 , 6F
,c,d,e上是不會變更結果的。但如果function所設參照的引數
05/07 12:15, 6F

05/07 12:15, 5年前 , 7F
值(a1:a5)改變時則都會重新計算。
05/07 12:15, 7F

05/07 13:40, 5年前 , 8F
了解 謝謝S大
05/07 13:40, 8F
文章代碼(AID): #1SqFXfIE (Office)