如何解决Google表格:计算某列中与另一列中的相应行不匹配的行数?
说我们在Google表格中有以下电子表格:
a a
b b
c
d e
e d
我将如何构建一个公式来计算B列中与A列中的对应行不匹配且不为空的行数?换句话说,我想获取在B列中更改为新字母的行数。因此在此示例中,公式应返回2。
谢谢您的帮助。
更新:
现在假设我有此电子表格:
a a
b b b
c a
d e e
e d e
我如何在第三列的最后一个公式上构建,返回的值是:
- (第3列中与第2列中的相应行不匹配的行数)+(如果第2列为空,则第3列中与第1列中的相应行不匹配的行数)
- 而且我也不想在第三栏中空白。
在这种情况下返回的值应为2(第3行和第5行)。
解决方法
=IFNA(ROWS(FILTER(A:B,(A:A<>B:B)*
(B:B<>"")
)),0)
-
FILTER
通过匹配条件*
(对于AND)和+
(对于OR)。 -
ROWS
对行进行计数
如果未找到任何内容, -
IFNA
将返回0。
或带有QUERY
=INDEX(QUERY(A:B,"select count(B) where B<>A"),2)
,
在我看来,您可以使用:
=SUMPRODUCT((B:B<>"")*(B:B<>A:A))
,
尝试一下:
=ARRAYFORMULA(COUNTA($B$1:$B)-SUM(COUNTIFS($A$1:$A,$B$1:$B,"<>")))
,
我看到两种方法可以完成此操作。
首先,您可以向每行添加一个函数,以在值更改且不为空时返回1或0,然后对结果求和。不幸的是,这会在电子表格中添加一个混乱的列。
=if(A1<>IF(ISBLANK(B1),A1,B1),1,0)
第二,您可以创建一个函数,将范围作为字符串传递。 工作表中的调用将如下所示:
=myFunction("A1:B5")
然后通过打开“工具”->“脚本编辑器”来创建脚本,并使用类似的内容
function myFunction(r) {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(r);
var numRows = range.getNumRows();
var areDifferent = 0;
for (let i=1; i<= numRows; i++) {
let currentValue = range.getCell(i,1).getValue();
let cmpValue = range.getCell(i,2).getValue();
if ((currentValue != cmpValue) && (cmpValue != "")) {
areDifferent++;
}
}
return areDifferent;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。