取得Excel中儲存格的公式,將對儲存格的所有參考替換為另一個公式及其內容

取得Excel中儲存格的公式,將對儲存格的所有參考替換為另一個公式及其內容

根據評論,我正在澄清我的要求。

我想要將多個單元格中的嵌套公式展平為單一公式。

以下範例只是為了演示如何手動執行此操作。但是,公式可以是任何種類/類型,並且與下面的範例完全無關。

我很好奇使用程式碼/工具/excel 本身是否可以實現以下操作 - Excel 中顯示公式

如圖所示,in hours公式非常簡單,但它實際上是由其他單元格中的一堆公式組成的。我想知道是否可以透過使用單一巨型公式中的所有公式產生的單一公式來擺脫中間計算。

雖然以這種方式設計和調試大型公式很容易,但在生產中,天真的用戶可以透過嘗試修改工作表來輕鬆破壞部分公式。您可以透過鎖定工作表並解鎖其他內容來保護它,但這也會產生無法擴展公式範圍或添加新行等意想不到的副作用。

因此,對於生產,我想知道是否有可能為以這種方式組成的東西獲得單一的公式答案。

在上面的範例中,我們嘗試從字串小時數計算數字小時數。

in hours = in seconds / 3600 = O2 / 3600
in seconds = HOURS * 3600 + MINUTES * 60 + SECONDS
HOURS = extract digits if they exist between 'h' and beginning of string
MINUTES = extract digits if they exist between 'h' and 'm'
SECONDS = extract digits if they exist between 'm' and end of string

所以如果你手動替換公式,結果會像這樣

in hours = (HOURS * 3600 + MINUTES * 60 + SECONDS) / 3600 
= (extract digits if they exist between 'h' and beginning of string * 3600 + extract digits if they exist between 'h' and 'm' * 60 + extract digits if they exist between 'm' and end of string) / 3600

正如您所看到的,這個範例非常簡單,但我想知道是否可以對其他複雜的複合函數執行此操作?

Excel 已經以某種方式自行完成所有這些計算穀草轉氨酶我認為,因為它已經檢測到循環依賴性等。那我們自己一定有辦法做到嗎?或是掛鉤 Excel 基礎來提取相同的公式?

答案1

可能可以做你想做的事情,但如果你可以使用 UDF 可能會更整潔。

Option Explicit

Function MyHrs(MyType As String, target As String) As Single

Dim x As Long, y As Long, z As Long
Dim Hrs As Long, Mns As Long, Ss As Long
On Error Resume Next

x = InStr(target, "h")
y = InStr(target, "m")
z = InStr(target, "s")

Hrs = Left(target, x - 1)
Mns = Mid(target, x + 1, y - x - 1)
Ss = Mid(target, y + 1, z - y - 1)

If MyType = "h" Or MyType = 1 Then MyHrs = Hrs + Mns / 60 + Ss / 3600
If MyType = "m" Or MyType = 2 Then MyHrs = Hrs * 60 + Mns + Ss / 60
If MyType = "s" Or MyType = 3 Then MyHrs = Hrs * 3600 + Mns * 60 + Ss

End Function

使用 ALT + F11 開啟開發人員窗口,然後插入模組並貼上程式碼。在工作表中如下使用: 在此輸入影像描述

這個可能需要更多的編碼來避免產生的錯誤,但它應該能夠演示這個概念。

相關內容