選擇具有公式的單元格後,我們可以在Excel公式欄中選擇其公式的一部分並計算它(通過按F9)。我需要通過JavaScript API重新評估子公式。評估公式的子公式
例如,讓我們假設細胞A1
,B1
的值,C1
分別1
,2
,3
和Cell D1
包含公式=A1+B1+C1
。我希望能夠快速評估子公式,如A1+B1
,B1+C1
,並獲得結果3
和5
。
在VBA中,下manual
計算模式,我們可以的D1
初始式的子式(例如,=A1+B1
)存儲在變量中,然後分配到D1
得到結果3
,然後還原回初始公式到D1
好像什麼都沒有發生;此評估不會提高D1
後代的任何其他單元的計算(感謝manual
模式)。
但是,使用JavaScript API時,重新計算僅適用於automatic
模式。如果我們將一個子公式(例如,=A1+B1
)分配給D1
,D1
後代的所有單元格都會被ctx.sync
重新計算,這可能很昂貴。
那麼有沒有一種方法或解決方法來優化?
一種可能的解決方法是在工作簿中找到沒有單元依賴的單元格(例如工作表的usedRange
之外的單元格,但我們仍然需要確保沒有單元格依賴於該單元格,原因是usedRange
...),然後爲該單元格分配一個子公式並獲取該值。這種方法的缺點是
1)它仍然是一個黑客,並修改工作表的區域。
2)用戶定義的函數(如果編程不好)可能依賴於工作表的尺寸或單元的位置。在這種情況下,評估孤立單元中的用戶定義函數可能會導致原始單元中的評估產生不同的結果(或副作用)。
任何人都可以幫忙嗎?
我很想了解更多關於您正在使用如此多的功能和API功能的這個加載項。如果您想演示或分享您的想法,請通過[email protected]與我聯繫,並提供我的工作電子郵件地址。謝謝! –
感謝您的關注和感謝@MichaelZlatkovsky不斷回答我的問題。我認爲這是一個特權,可以直接與微軟團隊聯繫,並且非常感謝。實際上,我之前已經在OCaml中開發了一個「引擎」,並且一個月後我一直在開發Excel JavaScript加載項作爲「接口」。我已經提交了2個,並且正在開發第三個(所以不是所有的功能都集成在一個插件中)。當我認爲我的加載項是可表達的,我很樂意繼續與你們密切合作(並遠程)... – SoftTimur