【问题标题】:Google finance as an argument for ArrayFormula谷歌金融作为 ArrayFormula 的论据
【发布时间】:2020-03-26 19:06:49
【问题描述】:
=ARRAYFORMULA(IF(ROW(B:B)=1, "Share Price", IF(ISBLANK(B:B), "", googlefinance(B:B, "price"))))

我正在尝试使第 1 行(我的标题行)有一个名称,然后在其下方,如果有效的股票代码是 B 列中的输入,则让 google Finance 获取该股票的价格。但是,我在“股价”下面的所有单元格中都得到 N/A 并且无法弄清楚原因。

请帮忙。

编辑:链接到工作表: https://docs.google.com/spreadsheets/d/1lyYYzLrFHfjojlL27bQ6ligNz2DBVpSM24jYfAVBVQs/edit?usp=sharing

【问题讨论】:

  • 分享您的工作表副本
  • @player0 我已经编辑了原始帖子以包含一个链接

标签: google-apps-script google-sheets google-sheets-formula array-formulas google-finance


【解决方案1】:

GOOGLEFINANCE 已经有点像 ArrayFormula,所以这不会像你期望的那样工作......

你需要使用脚本:

function onOpen(e){this.arrayThis("C1:C");}    //COLUMN WHERE YOU WANT TO HAVE THE RESULT
function arrayThis(range){
SpreadsheetApp.getActiveSpreadsheet().getRange(range).setValue(SpreadsheetApp.getActiveSpreadsheet().getRange(range).getCell(1,1).getFormula());
}

C1 需要在哪里:

=IF(ROW(B1)=1, "Share Price", IF(B1="",,GOOGLEFINANCE(B1, "price")))

【讨论】:

  • 感谢您的回答,因为这正是我想要的。但是,有一个主要功能仍然无法正常工作。如果我在任何时候添加新行并使用新代码填充它,则即使重新运行脚本,工作表也不会更新信息。就像脚本不知道添加了新列一样。
  • 您是否尝试将 onOpen 更改为 onEdit ?
  • 我试过了,但还是不行。当我添加新列时,公式不会填充到其中。
  • 嗨@Warstolrem!我已经尝试过@player0 解决方案,它确实对我有用。此外,我尝试在TickerShare Price 之间以及Company NameTicker 之间添加一列,并且仍然执行等式(实际上,公式的引用例如从C1 更改为E1 )。您能否分享您的问题的屏幕截图,或者让我知道我是否执行了与您相同的步骤?另外,在运行函数之前,您是否已将=IF(ROW(B1)=1, "Share Price", IF(B1="",,GOOGLEFINANCE(B1, "price"))) 添加到C1?谢谢!
  • 我希望这能更好地显示问题,TSLA 的行是在运行原始程序后创建的,但是,已经进行了多次编辑并且工作表没有填充。我也尝试过使用 onOpen 并重新打开页面无济于事:imgur.com/a/yHegPDX
猜你喜欢
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多