Google表格:您可以计算范围内的链接吗?

时间:2016-02-04 19:28:26

标签: hyperlink google-sheets formula

我有很多Google表格,需要在其他用户插入值后手动超链接(到特定的独特文档),但是搜索许多表单以查找尚未链接的单元格非常耗时。一个基本的解决方案是使用COUNTA获取包含文本的范围内的单元格数量,使用第二个函数来计算链接数量,显示差异。我尝试使用通配符对COUNTA和COUNTIF进行了许多排列,但似乎没有任何东西可以识别公式。 Google表格中是否有一项功能可以获取范围内超链接单元格的数量?

2 个答案:

答案 0 :(得分:1)

如果您指的是单元格中的网址(例如:www.google.com),您可以尝试:

=SUM(ArrayFormula(N(ISURL(A3:A))))

改变范围以适应。

如果使用= HYPERLINK()函数,则无效。

编辑:如果你想用文本计算单元格,但排除= Hyperlink()公式(AND空单元格),你可以尝试这个自定义函数:

function countF(range) {
var r = SpreadsheetApp.getActive().getRange(range),
    formulas = r.getFormulas(), 
    count = 0;
r.getValues()
    .forEach(function (r, i) {
        r.forEach(function (c, j) {
            if (c && formulas[i][j].substring(1, 10) !== "HYPERLINK") count += 1;
        })
    })
return count;

} 您可以通过输入

在电子表格中使用此自定义功能
=COUNTCELLS("Sheet1!A1:A2")

如果要从计数中排除所有公式,请将if语句更改为:

if (c && !formulas[i][j]) count +=1

确保始终提及工作表名称。

EDIT2:要计算公式的数量,你可以尝试这样的事情:

function countFormulas(range) {
var count = 0;
SpreadsheetApp.getActive()
    .getRange(range).getFormulas()
    .forEach(function(r) {
        r.forEach(function(c) {
            if (c.charAt(0) == '=') count += 1;
        })
    })
return count;

}

答案 1 :(得分:0)

我建议如下。该公式假设要检查超链接的单元格是否在带有标题的A列中(根据需要调整公式)。选择A2。右键单击并选择“条件格式”。输入以下内容:

申请范围

A2:A

格式化单元格

从下拉列表中选择'自定义公式'并输入:

= AND(NOT(ISFORMULA(A2)),NOT(ISBLANK(A2)))

选择所需的格式样式。

这将格式化并且不包含公式的非空白单元格。 (没有超链接)

另外两个选项来计算:

在一列中,假设B输入以下公式(请注意,ISFORMULA在ISBLANK等数组公式中不起作用。)复制公式。如果有超链接,它将返回FALSE,如果没有,则返回TRUE。

=NOT(ISFORMULA(A2))

然后计算使用次数:

=countifs(B2:B,"TRUE",B2:B,"<>''") 

另一个选项是脚本:

function noFormula() {
 var ss=SpreadsheetApp.getActiveSpreadsheet() 
 var s = ss.getSheets()[0];// [0] is Sheet1
 var lr=s.getLastRow()
 var rng =s.getRange(2, 1, lr-1, 1) //get column A data. Assumes header row.
 var data=rng.getFormulas()
  count=0
 for(i=0;i<data.length;i++){
   var hasFormula=data[i][0]
   var eqSign=hasFormula.substring(0,1) //looks for first character "=". If  there are formulas other than Hyperlinks change to substring(0,2) to look for "=H". 
 if(eqSign !="="){ //Not equal to"="
   count = count+1
  }}
var c=s.getRange(1,2).setValue(count)//Sheet1 B1
}