如何在列中查找值,并分配特定条目

时间:2013-05-10 22:06:38

标签: excel

我在Excel中有一个工作表,其中的列包含我所在部门不同团队中的不同人名(即第1列中的名称在第1组中)。

对于另一张表,我需要一个能够达到以下条件的公式:
如果我在Cell B2中写了一个名字,可以在另一张表(Team 1)的第一列中找到,Excel应该填充单元格B6与“Team 1”。
如果相反,我写的名字可以在第二栏找到,那么文字应该是“第2队”。

我已经尝试了几种不同的公式而没有成功,将很多IF和OR函数串在一起太麻烦了。有人有更好的解决方案吗?

2 个答案:

答案 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)))

假设你有一个类似的设置:

Table1

在Sheet2的B1中输入Name3,您希望它返回TEAM1,如下所示:

Formula1

这个公式的唯一问题是你需要告诉它你的数据前面有多少列,所以如果你有一个更像的表:

Table2

然后你需要告诉公式在数据开始之前有2行,你的新公式将是

=INDEX(Sheet1!C1:G1,SUMPRODUCT((Sheet1!C2:G6=B1)*COLUMN(Sheet1!C2:G6))-2)

注意最后一个括号前的-2,这表示在数据之前有2列。

和查询的新结果说NAME20将变为如下:

Formula2

*说明:*

该公式的工作原理如下,我将在一页上完成所有操作,以便于查看而不是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}

enter image description here

在此我们知道一个单元格包含我们搜索过的名称,这由TRUE

表示

现在使用像SUMPRODUCT这样的公式,FALSE = 0TRUE = 1

因此,为了获得列,我们将它们所在的列的每个结果都很清楚。

=SUMPRODUCT((A1:E6=G2)*COLUMN(A1:E6))

因此,任何不= G2的单元格都是FAlSE0,并且当您将该单元格的列乘以0时(因为false = {{ 1}})它只会导致0。但是对于一个单元格是0TRUE当您将该单元格的列乘以1时(因为1 = TRUE)该产品将是细胞列号

enter image description here

如图所示,当查找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