Excel - 计算多对非连续列中的条目的公式

Posted

技术标签:

【中文标题】Excel - 计算多对非连续列中的条目的公式【英文标题】:Excel - Formula For Counting Entries Within Multiple Pairs of Non-Sequential Columns 【发布时间】:2018-10-21 13:02:10 【问题描述】:

我有以下示例矩阵:

A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   
1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
2   1       1                               1
3                   1   1       1   1   1                               1
4       1   1   1   1   1                   1      
5           1                   1               1   1   1       1           1

我正在尝试计算除 A 行之外的至少一对非连续列在两列中都包含条目的行数。 列对是已知的,但列之间的距离不是恒定的。在当前示例中,列 B & K 和 C & L 成对(距离或 d = 9),E & I 和 F & J 成对(d = 4),G & S 和 H & T 成对(d = 12)。请注意,D 列未与任何其他列配对。这经常发生:通常配对之间的列距离在没有内在配对的列之后发生变化,例如,A & E (d = 4), B & F (d = 4), C 没有配对, D & K (d = 7)、E & L (d = 7) 等。

在当前示例中,至少一对列(如上所述)包含条目的行数为 3。例如,第 1 行包含所有列对的条目,第 3 行包含列对的条目F & J,以及 G & S,第 4 行有列配对 C & L 的条目。

这是我编写的数组公式的示例:

=COUNT(IFS(SUBTOTAL(2,OFFSET(B1,ROW(B1:B5)-ROW(B1),0,1,COLUMNS(B1:C1)))>1,SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1))),SUBTOTAL(2,OFFSET(C1,ROW(C1:C5)-ROW(C1),0,1,COLUMNS(C1:D1)))>1,SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1)))))

它计算成对的顺序列(例如,B & C、C & D)的条目数。我不确定如何更新它以指定成对的非顺序列(例如,B & K、C & L、E & I 等,如上所述)。

这里有几个条件:

您可能认为 SUBTOTAL 不是最有效的选项(例如,MMULT abd SUBTOTAL 可能更合适); 但是,我仅限于在单个 excel 公式中表达这一点(不幸的是,没有 VBA 代码)。我也无法创建新的列或行。 实际矩阵中的矩阵项不一定是 1,而是整数(范围为 1-100)。 在全矩阵中,距离 = 9 的列对有 8 个,距离为 12 的列对有 11 个,距离为 3 的列对有 3 个。

【问题讨论】:

这是什么版本的 Excel? 我猜是 2013+,但理想情况下它会兼容 2010+。 【参考方案1】:

试试这个公式

=SUM(IF((
    IF(B1:B5>0,IF(K1:K5>0,1))+
    IF(C1:C5>0,IF(L1:L5>0,1))+
    IF(E1:E5>0,IF(I1:I5>0,1))+
    IF(F1:F5>0,IF(J1:J5>0,1))+
    IF(G1:G5>0,IF(S1:S5>0,1))+
    IF(H1:H5>0,IF(T1:T5>0,1))
) > 0, 1, 0))

你可以在上面的列表中添加剩余的对,我已经添加了你提到的那些。

【讨论】:

您好 - 非常感谢您的回复。这有效,但前提是我删除了初始 IF,所以它变成: =SUM((IF(B1:B5>0,IF(K1:K5>0,1))+IF(C1:C5>0,IF(L1 :L5>0,1))+IF(E1:E5>0,IF(I1:I5>0,1))+IF(F1:F5>0,IF(J1:J5>0,1))+IF (G1:G5>0,IF(S1:S5>0,1))+IF(H1:H5>0,IF(T1:T5>0,1))))) 您编写的公式将计算工作表中的对总数,如果一行有多个匹配对,它甚至会计算在内。我插入了一个额外的 if 来只计算一次,即使它包含多个匹配对。它正在根据您提供的数据在我这边工作,您是在测试相同的数据还是实际数据,您可以提供一些额外的数据来测试它,我可以改进公式。 忽略我 - 我似乎忘记了我自己的问题的条件。这完美地工作。非常感谢。

以上是关于Excel - 计算多对非连续列中的条目的公式的主要内容,如果未能解决你的问题,请参考以下文章

如何快速查找Excel表格中某列中连续5次出现同一数据表格

使用公式或函数比较单元格值并在 Excel 中打印计数?

excel公式取决于不同列中的动态值

将excel中的相同公式复制到列中的每个单元格但只更改公式? [重复]

Excel公式将重复项计为一个

用openpyxl向下计算公式