我在Google Spreadsheets上构建了一个股票跟踪工作表,如果我在单元格B1中输入XYZ符号,电子表格将提取谷歌财务数据(有时非常慢),进行一系列计算并输出是/否细胞B18。
在另一个名为数据的标签中,我在单元格A1:A20中列出了20个股票代码符号。
我想编写一个函数,用来自数据的信息更改单元格B1!A1:A20,一次循环20次。在此过程中,如果B18中的输出为“是”,则在每一步中,该功能应在L2列开始记录相应的B1输入,从L2开始。
任何帮助,都会真诚地感谢这位新手。
答案 0 :(得分:0)
这应该这样做。我还添加了代码来构建一个菜单来运行它。我在主函数中添加了一个Utilities.sleep(注释掉了),以防你计算需要很长时间。你可能需要它。
function onOpen() {
SpreadsheetApp.getActiveSpreadsheet().addMenu(
'Stocks', [
{ name: 'Check Stocks', functionName: 'Stocks' },
]);
}
function Stocks() {
ss=SpreadsheetApp.getActiveSpreadsheet()
var s= ss.getSheetByName("Sheet1")// main sheet
var s1=ss.getSheetByName("data")//sheet with stock list starting in column A row 1
var lr = ss.getSheetByName("data").getLastRow()//get the last row of stocks (can be more than 20)
var stk=s1.getRange(1,1,lr-1,1).getValues()//get the stock symbols
var newArray=[]//array of "yes" stocks
for(i=0;i<stk.length;i++){
// Utilities.sleep(2000)//might be needed if your calculation take a long time
var curSym=s.getRange(1,2,1,1).getValue()//B1 stock
var z =stk[i][0]//stock from data list
s.getRange(1,2,1,1).setValue(z)
var yn=s.getRange(18,2,1,1).getValue()//yes or no from b18
if(yn=="Yes"){//if yes add to newArray
newArray.push([stk[i][0]])
}}
s.getRange(2,12,newArray.length,1).setValues(newArray)//list "yes" symbols in col L
}
如果您有任何问题,请告诉我。我做了很多库存。