Excel-返回在特定行中包含三个特定值的列

Excel-返回在特定行中包含三个特定值的列,excel,Excel,我现在正在努力在没有VBA的情况下实现这一目标。 我不想要任何VBA,我知道只需要两行以上的VBA代码就很容易做到 下面是我正在使用的表类型的简化模板 目标是:使用一个公式返回三个指定值匹配的列。我搜索的值将在工作表上公式所在的某个位置。 只要把它们作为公式中的值,如果你有一个可以做到这一点 如果有人帮助我恢复精神状态,请向我致以最诚挚的问候和感谢。假设数据设置如下: 此公式位于单元格F1中: =SUMPRODUCT((B1:C1&B2:C2&B3:C3=F2&F3&

我现在正在努力在没有VBA的情况下实现这一目标。 我不想要任何VBA,我知道只需要两行以上的VBA代码就很容易做到

下面是我正在使用的表类型的简化模板

目标是:使用一个公式返回三个指定值匹配的列。我搜索的值将在工作表上公式所在的某个位置。 只要把它们作为公式中的值,如果你有一个可以做到这一点


如果有人帮助我恢复精神状态,请向我致以最诚挚的问候和感谢。

假设数据设置如下:

此公式位于单元格F1中:

=SUMPRODUCT((B1:C1&B2:C2&B3:C3=F2&F3&F4)*(COLUMN(B1:C1)))
调整范围以适合您的实际数据

说明:

  • 它将列的行的值组合成一个字符串(因此在本例中,它将是{“KPI ADATEDATA TYPE”,“KPI BDATEDATA TYPE”})
  • 然后,它将这些结果与您要查找的组合字符串进行比较:“KPI AdatedData TYPE”将结果转换为TRUE/FALSE,因此结果为{TRUE,FALSE}(因为与KPI a匹配的第一个组合字符串)
  • 然后它得到结果的所有可能的列号:{2,3},在本例中是B列和C列
  • 然后,乘法将真/假分别转换为1和0,从而得到{1,0}*{2,3}
  • 因为假设只有一个匹配项,所以正确的列号是唯一要乘以1的值,所以结果是{2,0}
  • SUMPRODUCT然后对结果求和,因为只有一个非零数,所以它必须是列索引

指定值是多少?每列仅具有三个值。有些值是否在列之间重复?前三行的值范围很大。每个值都可以重复多次。但是,每列都有一组唯一的三个值,其他任何列都不会有相同的三个值。我想要一个公式,返回我正在搜索的3个值所在的列(字母或索引号)。所以。。。您正在寻找
50
500
500
作为三个值,公式应返回
3
指示列C?不真实。如果我要寻找价值观,那就是。然而,这是我正在搜索的列名。数值为10;100;1000 & 50;500;500只是占位符。与行名称A相同;BC.我想找到前三行值为KPI A的列;日期;数据类型。这是一个公式,没有VBA。我知道,但使用您提供的样本数据,您正在搜索的示例是什么,以及它的预期结果是什么?那么回到我的问题,你要寻找的可能性之一是
50
500
500
?如果是这样的话,预期的结果会是
3
。正是我想要的。它将完全适应我的数据集。嘿,我回来了。它工作得很好,也很好。我觉得自己很笨,不知道它是怎么工作的。你能解释一下吗?“这是什么把戏?”博布尔克特编辑了答案,加入了解释。非常聪明。我不知道SUMPRODUCT是这样工作的。它是否仅在以这种方式声明矩阵时才以这种方式执行,或者触发转换为字符串的是真/假?都要吗?为什么它将列的行连接在一起,而不是您声明的范围?我希望这不是太多的问题哈哈。Sumproduct是什么迫使内部函数充当数组公式。您可以使用Sum实现相同的效果,但您必须使用Ctrl+Shift+Enter来确认它,而不是像正常情况一样只使用Enter。有关数组公式的详细信息,请参见此处: