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

Arrays Excel-计算多对非连续列中的条目的公式,arrays,excel,count,countif,subtotal,Arrays,Excel,Count,Countif,Subtotal,我有以下示例矩阵: 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

我有以下示例矩阵:

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等)

以下是一些条件:

  • 您可能不认为小计是最有效的选择(例如,MMULT abd SUBTOTAL可能更合适)然而,我仅限于在单个excel公式中表达这一点(不幸的是,没有VBA代码)。我也无法创建新的列或行
  • 矩阵条目在实际矩阵中不一定是1,但它们是整数(范围从1到100)
  • 在完整矩阵中,有8个距离为9的列对、11个距离为12的列对和3个距离为3的列对
试试这个配方

=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))

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

这是什么版本的Excel?我想是2013+版,但理想情况下它将与2010+版兼容。您好-非常感谢您的回复。这是可行的,但前提是我去掉了初始的if,它变成:=和((如果(B1:B5>0,如果(K1:K5>0,1))+if(C1:C5>0,如果(L1:L5>0,1))+if(E1:E5>0,如果(I1:I5>0,1))+if(F1:F5>0,如果(J1:J5>0,1))+if(G1:G5>0,如果(S1:S5>0,1))+if(H1:L5>0,如果(T1:H5>0,1)),如果(T1:T5>0))将计算您在工作表中所写的公式的总数,如果一行有多个匹配对,它甚至会计数。我插入了一个额外的if,以便只对一行进行一次计数,即使它包含多个匹配对。你提供的数据在我这边起作用,你是在测试相同的数据还是实际数据,你可以提供一些额外的数据来测试它,我可以改进公式。别理我——我似乎忘记了我自己的问题。这很好用。非常感谢你。