计算另一个范围内的连续范围值的出现次数

时间:2017-01-07 02:49:54

标签: arrays excel-formula dynamic-arrays sumifs array-formulas

我的例子是在A栏上,我有不同的名字。

按照出现的顺序,这些是A1

{Joe, Michael, Ana, Victor, Joe, Ana, George, Victor, Chris, George, Joe, Michael, Ana, Victor, Joe, Michael}

所以Joe在A1,Michael在A2,Ana在A3等。

在B列上,我有一个子集的值,我想在列A的名称值集中搜索。让这个子集,从B1开始,是:

{Joe, Michael}

所以乔在B1,迈克尔在B2

我正在寻找一个单一的公式:

  • 不使用其他单元格的计算
  • 根据提供的顺序(例如 Joe,Michael ),在A列中计算子集值的次数。

对于此示例,它应返回值3。

这就是说,我实际上需要一个更通用的公式,它可以适用于任何子集,与其元素的数量无关。

请注意,没有关于子集最大大小的信息。

有人可以推荐一个公式吗?

3 个答案:

答案 0 :(得分:1)

这是一个可能对您有帮助的数组公式。它使用A列偏移:

Long然后 CTRL + SHIFT + ENTER

答案 1 :(得分:0)

以下公式将逐步改进前一个答案,以便在susbet中处理最多四个名字。我把它限制在四,以避免公式的“星期日报纸”长度。

如果(COUNTA(B1:B300)= 2,SUM(IF(EXACT(A1:A499&安培; A2:A500,B $ 1和B $ 2),1,0)),IF(COUNTA(B1:B300) = 3,SUM(IF(EXACT(A1:A499&安培; A2:A500&安培; A3:A501,B1&安培; B2&安培; B3),1,0)),IF(COUNTA(B1:B300)= 4,SUM(IF(EXACT (A1:A499&安培; A2:A500&安培; A3:A501&安培; A4:A502,B1&安培; B2&安培; B3&安培; B4)。,1, “”)), “”)))

当然,您可以通过更新“A”范围然后“B”范围来进一步扩展它以覆盖五个及以上的名称子集。

答案 2 :(得分:0)

解决问题的另一种方法会有所帮助。将A列中的所有名称复制到未使用的列。然后转到“数据”选项卡并使用“删除重复项”。按字母顺序对这些唯一值进行排序,复制它们,然后将它们转置(粘贴)到未使用的行中。

将此公式放在整个行中,紧接在唯一名称下的每个单元格中:= RANDBETWEEN(1,1000000)。选中两行后,转到“公式”选项卡,然后选择“已定义的名称”并选择“从选择中创建”。单击“顶行”框。

A列保存了您所说的数千个名字。在B1中键入此公式并填写:= INDIRECT(A1)。

在C3类型中:= IF(AND(EXACT(CONCATENATE(OFFSET(B1,0,0,COUNT(E $ 1:E $ 2000))),CONCATENATE(OFFSET(E $ 1,0,0,COUNT(E $ 1) :E $ 2000),1)))),1, “”)。列D保存名称值的子集。在E1中键入此公式并向下复制到D(子集):= IFERROR(INDIRECT(D1),“”)。最后,在任意位置使用SUM函数来计算A列中的子集值:= SUM(C:C)。

相关问题