【问题标题】:google apps script find value in range and return offset value谷歌应用程序脚本在范围内查找值并返回偏移值
【发布时间】:2017-03-22 21:01:37
【问题描述】:

我是 GAS 的新手,我正在尝试复制一些我在 Excel 中为我的 punting 组编写的 VBA 代码,以便可以在 Google 表格中使用它。鬼是……

  • 我在一张纸上有一组 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,如上面的 sn-p 所示。

在 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 表格的外观。

【问题讨论】:

    标签: google-apps-script offset


    【解决方案1】:

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

    transactions 表中,您可以通过=value(right(B3,3))B:B 获取ID。在I3 上说这个,然后您可以通过=match(I3, selections!B:B, 0)selections 表中查找该ID。它返回匹配的行,因此=index(selections!D:D, match(I3, selections!B:B, 0)) 为您提供“偏移量”(D:Dselections 表中)。假设这是在J3 上,然后您可以通过=J3 * product(C3:F3)G3 中获得付款。检查你的工作表,看看这是否是你想要的。

    【讨论】:

    • 感谢您的回复。我已经更新了“支出”列中的公式,以更好地代表我在 GAS 中尝试做的事情。正如你所看到的,它是一个相当冗长和混乱的公式,这就是为什么我试图编写与谷歌等效的 VBA 来管理它。
    • 如果公式有效,为什么还要麻烦 GAS?无论如何,在 GAS 中,您可以通过 getRanges() 获取值(getRange() 非常慢,只需 google 即可)。它为您提供了一个二维数组。然后你可以通过for循环搜索数组。但我想为这样的工作写 10 多行代码是不值得的......
    • 是的,这个公式有效,但从长远来看并不实用。那个特定的公式会重复自己 c.当前表格中的 250 倍,但在接下来的 12 个月内将翻倍。我在该电子表格中还有至少 20 个其他公式可以进行类似的偏移计算。这个公式重复的次数越多,电子表格越大(越慢),因此我要删除重复出现的公式。
    • 另外,在主 s/s 中,我找到了 6 个变量的偏移量,而不是样本中的 3 个变量...所以每个公式的大小都会翻倍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多