
我想解析 Excel 連接語句以尋找所包含表達式的結果。例如:=CONCAT("=1-2-3+7*8")
應該傳回52,並且
=CONCAT("=AVERAGE(A1,A2)")
應該傳回兩個欄位的平均值。 excel中有沒有任何函數或任何其他方法可以完成此任務?
答案1
嘗試以下使用者定義函數:
Public Function raghav(rng As Range) As Variant
Dim s As String
s = Mid(rng(1).Formula, 2)
arr = Split(s, Chr(34))
For Each a In arr
If Left(a, 1) = "=" Then
raghav = Evaluate(a)
Exit Function
End If
Next a
End Function
使用者定義函數 (UDF) 非常容易安裝並使用:
- ALT-F11 調出 VBE 窗口
- ALT-I ALT-M 開啟新模組
- 將內容貼進去並關閉 VBE 窗口
如果儲存工作簿,UDF 將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案另存為 .xlsm 而不是 .xlsx
到消除UDF:
- 如上所示調出 VBE 窗口
- 清除程式碼
- 關閉VBE視窗
到使用來自 Excel 的 UDF:
=raghav(A1)
要了解有關巨集的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有關 UDF 的詳細信息,請參閱:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必須啟用巨集才能使其工作!