我在Excel中有一个工作表,其中的列包含我所在部门不同团队中的不同人名(即第1列中的名称在第1组中)。
对于另一张表,我需要一个能够达到以下条件的公式:
如果我在Cell B2中写了一个名字,可以在另一张表(Team 1)的第一列中找到,Excel应该填充单元格B6与“Team 1”。
如果相反,我写的名字可以在第二栏找到,那么文字应该是“第2队”。
我已经尝试了几种不同的公式而没有成功,将很多IF和OR函数串在一起太麻烦了。有人有更好的解决方案吗?
答案 0 :(得分:0)
在MATCH()
内使用VLOOKUP()
或IF()
功能。就像这样:
IF(NOT(ISERROR(MATCH(...)));"Team1";"")
您是否知道可以通过catergoty浏览功能(例如搜索),只需按下公式栏左侧的 fx 并使用下拉框。每个公式都带有通常相当清晰的信息的描述......
答案 1 :(得分:0)
如果你需要这个公式只有两个列,那么id使用公式
=INDEX(Sheet1!C1:G1,SUMPRODUCT((Sheet1!C2:G6=B1)*COLUMN(Sheet1!C2:G6)))
假设你有一个类似的设置:
在Sheet2的B1中输入Name3,您希望它返回TEAM1,如下所示:
这个公式的唯一问题是你需要告诉它你的数据前面有多少列,所以如果你有一个更像的表:
然后你需要告诉公式在数据开始之前有2行,你的新公式将是
=INDEX(Sheet1!C1:G1,SUMPRODUCT((Sheet1!C2:G6=B1)*COLUMN(Sheet1!C2:G6))-2)
注意最后一个括号前的-2
,这表示在数据之前有2列。
和查询的新结果说NAME20将变为如下:
*说明:*
该公式的工作原理如下,我将在一页上完成所有操作,以便于查看而不是Sheet2!B2和B6我将在与数据相同的工作表上使用G2和G6。
首先我们查看范围A1中的所有值:E6并找到具有匹配名称的值,以便我们使用
=A1:E6=G2
现在当您将其输入单元格时,您将收到#VALUE
,但是如果您转到公式栏并按F9
,它将会显示公式的全部值
{FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,TRUE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE}
在此我们知道一个单元格包含我们搜索过的名称,这由TRUE
现在使用像SUMPRODUCT这样的公式,FALSE = 0
和TRUE = 1
因此,为了获得列,我们将它们所在的列的每个结果都很清楚。
=SUMPRODUCT((A1:E6=G2)*COLUMN(A1:E6))
因此,任何不= G2的单元格都是FAlSE
或0
,并且当您将该单元格的列乘以0
时(因为false
= {{ 1}})它只会导致0
。但是对于一个单元格是0
或TRUE
当您将该单元格的列乘以1
时(因为1
= TRUE
)该产品将是细胞列号
如图所示,当查找1
时,sumproduct的结果为3(其列)
然后返回该名称的NAME13
,我们使用INDEX函数将返回给定坐标的单元格中的值。
在这种情况下,我们希望TEAM
中的值与我们匹配的名称在同一列中。当看作数组A1:E1
看起来像
A1:E1
我们希望将该数组中的值返回到与单元格的列号相同的位置,减去数据前的任何非包含列,因此我在secon示例中给出了{"TEAM1","TEAM2","TEAM3","TEAM4","TEAM5"}
的原因。
所以:
-2
在此示例中,excel将此公式解释为
在=INDEX(A1:E1,SUMPRODUCT((A1:E6=G2)*COLUMN(A1:E6)))
的值列表中返回第3个值(3来自sumproduct,如前所述)。该值为A1:E1
。