将从 VLOOKUP 函数中找到的几个值输入到 COUNTIF 函数中

将从 VLOOKUP 函数中找到的几个值输入到 COUNTIF 函数中

这个问题是关于 Microsoft Excel 中的一个单一函数(在单个单元格中,稍后推断整个表格)。

我想在另一页上找到一个唯一的 ID(在第一列中的其他 ID 中)(我认为使用 VLOOKUP 函数)并将其他列(同一行)中的值与此页面中的特定值进行比较。

基本上,第一页是每个唯一 ID 的几个(大约 6 个,有些单元格为空白)日期,这些 ID 位于第一列,每个 ID 对应的日期位于同一行中的其他某些列(第 3、第 5、第 7 等)。第二页的第一列是 ID,而即将到来的日期(在接下来的一周)位于顶行。显然,如果唯一 ID(行)具有列的日期(在第一张表中与相同 ID 相邻的任何指定单元格中),则该单元格具有 1(或 true 或其他),否则具有 0(或 false 等)。然后我计划将具有最近即将到来的 ID 的列排序在顶部。

对于第二部分,关于检查它们是否与第二张表的列的日期匹配,我只能想到使用 COUNTIF 函数,但这只适用于查看多个单元格,而将所有这些都放在一个函数中似乎是以列表的形式输入。

此外,第二部分是比较日期,当我建立一个函数来尝试达到这个最终函数时,我经常发现令我困惑的值错误,我尝试将列表和标准更改为:文本、序列号、日期。

这是我在 Sheet 1 上针对单列日期使用的函数:

=IF((VLOOKUP($A5,Sheet1!$A$2:$C$6,3,FALSE)=C$1),1,0)

这是我用来将 VLOOKUP 找到的值制作成列表并尝试将其输入到 COUNTIF 函数中的函数:

=("{"&TEXTJOIN(",",TRUE,(VLOOKUP($A3,Sheet1!$A$2:$L$6,{3,5,7,9,11},FALSE)))&"}")

这是最近的一次尝试:

=IF(((COUNTIF((“{“&TEXTJOIN(“,,TRUE,VLOOKUP($A3,Sheet1!$A$2:$L$6,{3,5,7,9,11},FALSE)))&“}”),B$1)>0)=TRUE),1,0)

这是 Sheet 1 的示例

这是 Sheet 2 的示例

答案1

我将您的源工作表复制到我的 Sheet1 中。它看起来像这样:

在此处输入图片描述

如果我理解正确的话,您想要一个 TRUE/FALSE 或 1/0 的网格,其行标题是唯一 ID,其列标题是一系列日期。

我创建了如下表格: 在此处输入图片描述

为了填充 TRUE/FALSE 值,我们需要确定一些事情:

  1. 我们要查找的源数据中的行
  2. 如果列标题中的日期位于找到的行中的日期列表中。实际上,日期在行中的位置并不重要。

在对 INDEX、MATCH、INDIRECT 等进行了一些实验之后,它开始变得混乱。以下代码可以满足您的需要:

=NOT(ISERROR(INDEX(Sheet1!$A$1:$F$10,MATCH($A2,Sheet1!$A:$A,0),MATCH(B$1,INDIRECT("Sheet1!$A$"&MATCH($A2,Sheet1!$A:$A,0)&":$F$"&MATCH($A2,Sheet1!$A:$A,0)),0))))

我对此并不满意,主要是因为我不喜欢公式中的字符串连接。当某些东西看起来太复杂时,它很可能就是如此。事实证明,使用以下代码可以实现相同的结果:

=SUM(IFERROR(FIND(B$1,XLOOKUP($A2,Sheet1!$A$2:$A$10,Sheet1!$B$2:$F$10)),0))

该公式得出以下结果:

在此处输入图片描述

让我们分析一下它为何有效。

XLookup 和 Spill 公式使这变得容易得多。如果我只使用 XLookup,我可以返回唯一 ID 的整行。

因此,我可以获得“alpha”的所有日期:

=XLOOKUP($A2,Sheet1!$A$2:$A$10,Sheet1!$B$2:$F$10)

在此处输入图片描述

太棒了。接下来,我需要查看这些日期,看看能否找到列标题(4 月 15 日)。FIND 可以做到这一点。

=FIND(B$1,XLOOKUP($A2,Sheet1!$A$2:$A$10,Sheet1!$B$2:$F$10))

在此处输入图片描述

好的,现在我得到了 1 和一些错误。我可以使用 IFERROR 将错误转换为零:

=IFERROR(FIND(B$1,XLOOKUP($A2,Sheet1!$A$2:$A$10,Sheet1!$B$2:$F$10)),0)

在此处输入图片描述

我只想要一个结果,所以如果我将整个内容包装在 SUM 中,如果在列标题中找到日期,它将显示 1,否则显示 0。

=SUM(IFERROR(FIND(B$1,XLOOKUP($A2,Sheet1!$A$2:$A$10,Sheet1!$B$2:$F$10)),0))

在此处输入图片描述

将 1 转换为 TRUE 并将 0 转换为 FALSE(如果您愿意的话)并不需要太多努力,并注意,如果在源表的行中找到多次日期标题,则返回的数字将> 1,但也许这在其他方面是有用的。

相关内容