需要excel索引函数实现

时间:2016-12-12 09:59:26

标签: excel excel-formula

在以下公式中,

我需要搜索第一张中的每一行, sheet2 中的所有行,列 B D ,并从那里获取相应的值:

=X2&"|" & IF(AND(Sheet1!E2=Sheet2!B2,Sheet1!C2=Sheet2!D2),Sheet2!Z2 & "|" & Sheet2!Y2,"")

=X2&"|" & IF(AND(Sheet1!E2=Sheet2!B:B,Sheet1!C2=Sheet2!D:D),Sheet2!Z#INDEX_of_lineWHICHMATCHESCRITERIA & "|" & Sheet2!Y#INDEX_of_lineWHICHMATCHESCRITERIA,"")

我还没有想到如何正确使用INDEX函数来实现这一点,并结合上面的公式

我详细说明了这个任务: 我有一个excel文件。需要完成的任务如下:对于每一行(实际上对于每个id,存储在A列中 - 存在于表1中),以下条件为真:

列E(存在于表1中)=列B(存在于表2中)和列C(存在于表1中)=列D(存在于表2中),

我必须将列Z(存在于表2中)和列Y(存在于表2中)中的数据插入到列X(存在于表1中)。

如果列X中已包含数据,则所有新插入的数据必须具有|作为分隔符,应插入现有值的前面。

如果列Z或Y中不存在任何数据,则不会向列X插入任何内容。

我尝试过没有成功,使用索引匹配,但没有运气,我认为需要更复杂的东西。我怎么能用excel公式做到这一点?如何改变以下公式,以获得满足条件的行? = X2&安培; “|” &安培; IF(AND(Sheet1!E2 = Sheet2!B2,Sheet1!C2 = Sheet2!D2),Sheet2!Z2&“|”​​& Sheet2!Y2,“”)

= X2&安培; “|” &安培; IF(AND(Sheet1!E2 = Sheet2!B:B,Sheet1!C2 = Sheet2!D:D),Sheet2!Z#lineWHICHMATCHESCRITERIA&“|”​​& Sheet2!Y#lineWHICHMATCHESCRITERIA,“”)

1 个答案:

答案 0 :(得分:1)

希望这可以帮助您掌握INDEXMATCH背后的逻辑:

INDEX(array, row_num, [column_num]) - 从单元格返回值。

  • 数组 - 您希望得到结果的单元格范围。
  • row_num - 您希望产生的行数。
  • column_num - 您希望从中获得的列数。

注意:行/列号与选定范围有关。

示例:

  • INDEX(A1:A5,3)将从A3
  • 返回值
  • INDEX(A5:A10,3)将从A8
  • 返回值
  • INDEX(A1:G1,3)将从C1返回值

MATCH(lookup_value, lookup_array, [match_type]) - 返回第一场比赛的行/列。

注意:返回的行/列号与选定范围有关。

  • lookup_value - 这是您要查找的数字或文字,可以是值或单元格引用。
  • lookup_array - 您要在其中搜索值的单元格范围。
  • match_type - 这是一个告诉公式应该返回完全匹配或最接近值的参数。

示例:

  • MATCH("Cat",A1:A5,0)将返回值为“Cat”的单元格的行号

现在,如果将这两者结合起来,它将如下所示:

INDEX (column to return a value from, (MATCH (lookup value, column to search from, 0))

  • 列,用于返回中的值 - 您希望得到结果的单元格范围。
  • 查找值 - 您希望查找相应数据的值。
  • 要搜索的列 - 您要在其中搜索值的单元格范围。

示例:

  • INDEX(B1:B5,MATCH("Cat",A1:A5,0)会在Cat列中找到A,并从列B的同一行返回值。