2016-01-26 33 views
0

我正在嘗試開發交互式電子表格,爲預算文檔創建敘述。將會有多種選擇。一旦用戶選擇一個項目,它將幫助他們計算總數。我想設置它們填充的選項框。例如,四個單元格將被允許輸入B1:B4。我將命名這四個單元格中的每一個(即A,B,C,D)。在參考文件中我想寫各種公式。在某些情況下,我可能需要「(A + B)* C」,我可能需要「A * B * C」或「(A + B + C)/ D」......電子表格將查找文本公式,然後我想轉換它。因此,在查找結果「(A + B)* C」的情況下,我希望它將它轉換爲=(間接(A)+間接(B))*間接(C),然後從A即B1),B(即B2)等。基本上,我想使用或創建與Excel的FORMULATEXT()函數完全相反的東西。我希望在Google表格中執行此操作,但如果需要,我願意使用Excel。我對Google的腳本和VBA有一個非常基本的瞭解,並且願意在必要時創建,但是甚至不知道如何解決它。將文本字符串轉換爲電子表格中的公式

對此提出建議?

+2

在excel vba中快速而骯髒的方法是一旦一個值被輸入到單元格中,您可以執行'cell.forumla =「=」&cell.Value'。雖然這有零檢查錯誤。我從來沒有在谷歌的電子表格中編寫代碼,但我可以想象它不會有太大的不同。 – Taelsin

+0

因此,參考文檔不是電子表格,但您需要從中提取公式?公式必須在一個容易找到的地方。例如在第n段開始時。或者在您可以搜索的特定關鍵詞後面。 – SpiderPig

+0

btw。如果你在單元格中有文本公式,你可以在google表格中做'cell2.setFormula(cell1.getValue())'。 – SpiderPig

回答

0

我發現了一個辦法做到這一點在谷歌Apps腳本:

function reCalc() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var src = sheet.getRange("J26"); // The cell which holds the formula 
var str = src.getValue(); 
str = str.replace('A', 'indirect("OPTA")').replace('B', 'indirect("OPTB")').replace('C', 'indirect("OPTC")').replace('D', 'indirect("OPTD")').replace('ENR', 'indirect("ENR")'); 
var cell = sheet.getRange("J30"); // The cell where I want the results to be 
cell.setFormula(str);    // Setting the formula. 

}

謝謝SpiderPig給我的想法!

+0

您不需要使用'indirect',只需將'A'替換​​爲'OPTA'等。 – SpiderPig

相關問題