2017-07-06 25 views
0

我用Excel計算一個字符串值,其中評估()工作正常允許在名稱管理器,我使用評價() am 不是允許在VB A中使用它,因爲該文件被轉換爲.xls。這是問題。計算文本公式(NO VBA和NO評估)

我有100秒的長式的例子:

($F$10+0)+($F$11+0.125)+($F$10+0.0625) 

,我需要單獨評估方括號之間的值。
我能夠式分離以

A1 is ($F$10+0)   
A2 is ($F$11+0.125)  
A3 is ($F$10+0.0625) 

我想把一個符號「=」此字符串的前面和計算A1,A2,和A3的值。
但是我不允許在文件管理器中使用函數EVALUATE(),它在單元格中不起作用,我不允許使用VB A編寫公式。
是否有替代品用於評估我可以使用?
謝謝

回答

0

歡迎來到Excel的黑暗面。

如果你不能使用:

1)VBA

2)宏

3)評估()

4)文件管理器/定義名稱

然後沒有簡單的公式可以幫助你(加上你不能自己做)。微軟多年來故意沒有解決這個問題。

因此,您可以自己設備在Excel單元格中創建自己的解析器。

如果您有各種類型的公式可能會改變符號,或者處理的單元格數量很多,或者公式可能採取的任何其他瘋狂操作,這可能會非常困難。

但是......如果您對公式的表達方式有偏差的最小數量......您可以寫一些能夠實現這一功能的東西。

這帶來了一個警告......公式必須每次都提供相同的參數。你給出的例子是,每個公式的結構定義完全相同。

因此,因此,使用您的例子,你可以這樣寫代碼列A2:

=INDIRECT(MID(A1,SEARCH("$",A1),SEARCH("+",A1)-SEARCH("$",A1)),TRUE)+MID(A1,SEARCH("+",A1)+1,LEN(A1)-SEARCH("+",A1)-1) 

然後你可以在代碼複製到B2和C2。

這會給你正確的數學,就好像它是一個公式。

所需要這個工作的結構參數爲:

1)單元格地址必須始終以美元開始符號$

2)小區地址必須緊跟着一個加號+

3)只有單次添加作爲式

4)完成的加號後的操作數必須是數字

5)的公式必須用括號結束)

6)不能傷害到開始括號或者(

而且由於所有公式堅持這一結構...公式我提供的將會工作。

如果您需要更改項目3以允許「減法」,那麼您將需要在公式中添加if語句,並且它將變得非常快速地變得複雜。不可能?不,但是一個巨大的混亂?是。

無論如何,這應該適用於您擁有的所有限制。那是......如果你的公式不偏離已經提供的結構。如果你有不同的公式結構,你需要讓我們知道他們......或者更好,寫下自己的代碼。

希望這有助於。 :)

+0

謝謝阿布拉。我會等待一些更多的反饋,但是這樣做會有訣竅,正如你所說的有侷限性。我有時在括號之間有3個部分,或者有時在裏面有乘法。我必須仔細研究這一點,看看我是否可以生成助手公式,但這是一個很好的開始 對我來說,MS有很多驚人的缺陷。我正在使用ERP。他們在後臺使用Excel。他們是有限的 - 不是MS。我認爲大多數ERP公司不配擁有數十億美元的產業。他們只是試圖適應一個圈子的方形來銷售和勾住你的生活 – Ramz

+0

大聲笑......你可能對許多ERP來說都是正確的。和「玩弄」是有趣的部分。 :)是的,把它分成3個部分可能會很棘手,特別是在混合中乘法。 PEDMAS現在是一個問題。在編寫複雜的Cell代碼時,我發現將每個函數分解到它自己的單元格中並且有很多單元格調用以前的單元格會更容易。所有在不同的工作表上,以便我可以記錄所有的瘋狂行爲。然後在最後將它們合併成一個笨重的公式以粘貼回主頁面。 「文件」是那裏的關鍵詞。 – abraxascarab