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