【问题标题】:Convert a text string to a formula in a spreadsheet将文本字符串转换为电子表格中的公式
【发布时间】:2016-01-26 20:01:26
【问题描述】:

我正在尝试开发一个交互式电子表格,为预算文件创建叙述。会有多种选择。一旦用户选择了一个项目,它将帮助他们计算总数。我想设置他们填写的选项框。例如,输入 B1:B4 将允许四个单元格。我将为四个单元格中的每一个命名(即 A、B、C、D)。在参考文档中我想写各种公式。在某些情况下,我可能需要“(A+B)*C”,而在另一种情况下,我可能需要“A * B * C”或“(A+B+C)/D”……电子表格会查找文本公式,然后我想转换它。因此,在查找“(A+B)*C”的情况下,我希望它将其转换为 =(indirect(A)+indirect(B))*indirect(C),然后从 A (这是B1),B(这是B2)等等。

基本上,我想使用或创建与 Excel 的 FORMULATEXT() 函数完全相反的东西。我更愿意在 Google 表格中执行此操作,但如果需要,我愿意使用 Excel。我对 Google 的脚本和 VBA 都有非常基本的了解,如有必要,我愿意创建,但我什至不知道如何解决它。

建议?

【问题讨论】:

  • 在 excel vba 中一种快速而肮脏的方法是,一旦在单元格中输入了一个值,您就可以执行 cell.forumla = "=" & cell.Value。虽然这有零错误检查。我从来没有在谷歌的电子表格中编码过,但我想这不会有太大的不同。
  • 所以参考文档不是电子表格,但您需要从中提取公式?公式必须放在容易找到的地方。例如在第 n 段的开头。或者在您可以搜索的特定关键字后面。
  • 顺便说一句。如果您在单元格中有文本公式,则可以在 Google 表格中执行 cell2.setFormula(cell1.getValue())

标签: google-apps-script google-sheets


【解决方案1】:

我在 Google 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 给了我这个想法!

【讨论】:

  • 你不需要使用indirect,只需将'A'替换​​为'OPTA'等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多