【问题标题】:Count occurrences of sequential range values in another range计算另一个范围内连续范围值的出现次数
【发布时间】:2017-05-21 21:38:24
【问题描述】:

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

让这些按照出现的顺序排列,从A1开始:

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

所以乔在A1,迈克尔在A2,安娜在A3等等。

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

{Joe, Michael}

所以乔在B1 而迈克尔在B2

我正在寻找一个公式:

  • 不会使用来自其他单元格的计算
  • 这将按 A 列中提供的顺序(例如 Joe、Michael)计算子集的值包含多少次。

对于这个例子,它应该返回值 3。

话虽如此,我实际上需要一个更通用的公式,它适用于任何子集,而与它的元素数量无关。

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

谁能推荐一个公式?

【问题讨论】:

  • 你的系统支持TEXTJOIN() ??
  • 很遗憾没有

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


【解决方案1】:

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

=SUM(IF(EXACT(A1:A499&A2:A500,B$1&B$2),1,0)) 然后 CTRL+SHIFT+ENTER

【讨论】:

  • @Razvan-- 在再次阅读您的示例时,A 列的子集“Joe, Michael”的计数不应该为 3 吗?要么你只是数错了,要么我没有理解你在寻找什么。我希望这会有所帮助。
  • 是的,你是对的,我记错了。应该是 3。对此感到抱歉..我更正了我最初的评论。谢谢!
  • 这个公式很好用。但是,它没有考虑到第二个数组的维度是未知的。在这种情况下,它是 2 - {Joe, Michael},但它可以是任何数字。
  • 如果第二个数组的维度未知,那么您最好查看 VBA 并仅使用值为 Joe, MichaelB1 并按程序执行此任务。
  • @RobinMackenzie 我知道这一点。然而,挑战在于只使用 excel 而没有其他单元格,除了识别第一个和第二个子集的每个值。
【解决方案2】:

以下公式将在先前答案的基础上逐步改进,以处理 susbet 中最多四个名称。我将其限制为四个,以避免公式的“星期日报纸”长度。

IF(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”范围。

【讨论】:

    【解决方案3】:

    解决问题的不同方法会有所帮助。将 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)。

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多