Google表格:计算HYPERLINKS的数量,其中值> 0

时间:2019-06-28 12:51:46

标签: google-apps-script google-sheets hyperlink google-apps google-sheets-formula

我在Google表格中有许多单元格 这些单元格中有些包含值(数字),有些带有,而有些没有HYPERLINKS 如果值> 0

,我需要计算此单元格区域的超链接数

此函数工作正常,但不包含任何单元格值 Counting hyperlinks on Google Sheets formula

1 个答案:

答案 0 :(得分:1)

  • 您要计算公式为import numpy as np np.random.seed(123) df = pd.DataFrame({'c1':np.random.randint(1,100,1000), 'c2':np.random.randint(1,100,1000), 'c3':np.random.choice([1,0], 1000)}) %%timeit m = df['c1'].eq(1).groupby([df.c3, df.c3]).transform('sum').ge(2) df.loc[m] #5.21 ms ± 15.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) %timeit df.groupby(['c2','c3']).filter(lambda x: x['c1'].eq(1).sum() >= 2) #124 ms ± 714 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) 且值大于=HYPERLINK()的像元数。
    • 这将运行一行,并且还有没有超链接的单元格。
    • 您要使用自定义功能来实现。
  • 作为示例,在共享电子表格中,您需要0的数量。

我可以像上面那样了解您的目标。如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。

您当前的脚本:

在共享的电子表格中,我确认您当前的脚本如下。

2

修改点:

  • 在当前脚本中,未检索到值。
    • 在此修改中,公式和值均从单元格中检索。
  • 对于您而言,公式是从一行中检索的。因此可以删除一个function countLinks(rangeNotation, range) { var formulas = SpreadsheetApp.getActiveSheet().getRange(rangeNotation).getFormulas(); return formulas.reduce(function(acc, row) { return acc + row.reduce(function(acc, formula) { return acc + (/^=HYPERLINK/i.test(formula) ? 1 : 0); }, 0); }, 0); }
  • reduce()未使用。

以上几点反映到您当前的脚本中时,它如下所示。

修改后的脚本:

range

用法:

例如,当您将其用作自定义函数时,请将以下自定义函数放在共享电子表格的“ AO3”单元格中。

function countLinks(rangeNotation) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var formulas = sheet.getRange(rangeNotation).getFormulas()[0];
  var values = sheet.getRange(rangeNotation).getValues()[0];
  return formulas.reduce(function(acc, formula, i) {
    return acc += (/^=HYPERLINK/i.test(formula) && values[i] > 0 ? 1 : 0);
  }, 0);
}

结果:

将上述脚本用于共享电子表格时,将获得以下结果。

enter image description here

参考文献: