谷歌应用程序脚本在范围内查找值并返回偏移值

时间:2017-03-22 05:35:39

标签: google-apps-script offset

我是GAS的新手,我正在尝试复制我在Excel中为我的撑船组编写的一些VBA代码,因此可以在google工作表中使用它。 gyst是......

  • 我在一张纸上有一系列ID(交易)
  • 我需要找到第二张(选择)
  • 范围内的每个id
  • 如果找到了id,那么我需要检索偏移量$$值
  • 如果找不到ID,那么我需要检索值$ 1
  • 在检索完所有$$值之后,我需要将它们相互相乘



var ss = SpreadsheetApp.getActiveSpreadsheet(),
    sel = ss.getSheetByName('selections'),
    trn = ss.getSheetByName('transactions');

function calcPayout(a,b,inv) {
  var data = sel.getRange("B3:B");
  
  // find a in data, then return offset(0,2) as div1
  // find b in data, then return offset(0,2) as div2
  
  return div1 * div2 * inv
}




虽然我想自动化它,与我创建的Excel s / s一样工作,我也很高兴使用UDF,如上面的代码片段所示。

在VBA我使用以下内容做同样的事情......



div1 = trn.Cells(i + 2, 11)  // finds 'a' instead of user entering 'a' 
    div1 = data.Find(what:=div1).Offset(0, 2).Value
div2 = trn.Cells(i + 2, 12)
    If opt2 = Empty Then GoTo calcLegReturn // calcReturn does 'return' calc
        div2 = data.Find(what:=div2).Offset(0, 2).Value




任何人都可以帮助我吗?如果需要this is a sample google表格的样子。

1 个答案:

答案 0 :(得分:0)

我不知道'偏移'是什么意思,但无论如何我在你的表中写了一些公式。

transactions表格中,您可以B:B=value(right(B3,3))获取ID。在I3上说明这一点,然后您可以在selections表格中=match(I3, selections!B:B, 0)查找该ID。它会返回匹配的行,因此=index(selections!D:D, match(I3, selections!B:B, 0))会为您提供“偏移量”(D:D表格中的selections)。说这是J3,然后您可以=J3 * product(C3:F3)中的G3获得付款。检查您的表单,看看这是否符合您的意图。