查找指定列中的值

时间:2015-02-10 14:16:19

标签: excel

我最近想做的事情,并且无法解决怎么做,我在作为参数传递的专栏中是MATCH。本质上,我有一个二维数组,我希望能够找到第n列中给定值的第一次出现,对于任何给定的n值,并返回它出现的行号。或者(或多或少等价),我希望能够在列中搜索给定的列标题。有没有办法做到这一点?

实际上,我想模拟不存在的函数=MATCH(lookup_value,lookup_array,lookup_column,[match_type])

我使用INDIRECT完成了一项可怕的躲避工作,这项工作很有效,但却让我感到非常可怕。 =MATCH(lookup_value,INDIRECT("R"&<top of array>&"C"&<left of array>+<column reference>&":R"&<bottom of array>&"C"&<left of array>+<column reference>,FALSE),FALSE)

5 个答案:

答案 0 :(得分:3)

这个公式应该对你有用,并且会避免间接。任何时候你都可以避免使用间接,我建议你这样做。

=MATCH(lookup_value,INDEX(lookup_array,0,MATCH(lookup_header,array_headers,0)),0)

如果您没有按列标题查找列并且只有列号,那么它就会变得更容易:

=MATCH(lookup_value,INDEX(lookup_array,0,column_number),0)

答案 1 :(得分:0)

你可以这样做:

Set findCell = ActiveSheet.Range("A:Z").Find(What:="term_to_search")

将根据您的搜索字词选择标题。

Set range = ActiveSheet.Range(findCell, findCell.Offset(DEF_MAX_ROWS, 0))

设置一个范围,从该标题中搜索整列。

答案 2 :(得分:0)

您可以使用INDIRECT功能在公式中指定范围。因此,例如,如果您要在单元格A75中搜索要搜索的列的字母标记,则可以使用:

=MATCH("Value_To_Match", INDIRECT(A75 & ":" & A75), 0)

因此,如果A75中的值为G,则INDIRECT调用中构建的字符串为G:G,而MATCH将通过列G查找& #34; Value_To_Match&#34;并返回它找到的行号。

使用这个想法,您可以将公式放入A75,为您要搜索的列生成列名称。例如,如果您的列标题全部位于第1行,并且您要搜索的标题位于A74中,则可以执行以下操作:

=CHAR(MATCH(A74, 1:1, 0) + 64)

使用CHAR功能将数字转换为ASCII字符,因此65变为A,66变为B等。请注意,这只有在您没有Z列的列时才有效。您和#39 ; d需要一个更挑剔的公式,用AA等做正确的事。

您可以使用R1C1 notation来克服处理列字母的烦恼,您可以通过向FALSE表达式添加INDIRECT的第二个参数来激活它。现在,您不是用字母指定列,而是使用数字指定它。这简化了A75中的列取景器:

=MATCH(A74, 1:1, 0)

以及整体INDIRECT中的MATCH表达式:

=MATCH("Value_To_Match", INDIRECT("C" & A75, FALSE), 0)

答案 3 :(得分:0)

对于Z以外的列引用,您可以切换表示法(Excel选项,公式,使用公式并检查R1C1参考样式),并假设要查找的值在&#39; A1&#39; (R1C1)列号为&#39; A2&#39; (R2C1)适用:

  =MATCH(R1C1,INDIRECT("C"&R2C1,0),0)

converting a string of two or three characters into the relevant column number中保存一些复杂性。

答案 4 :(得分:0)

假设我们有一个二维数组: B3:E17 ,我们希望在该数组的第三列找到 Happiness

G1 中输入:

B3:E17

G2 中输入:

3

G3 中输入:

=ADDRESS(ROW(INDIRECT(G1)),COLUMN(INDIRECT(G1))+$G$2-1) & ":" & ADDRESS(ROW(INDIRECT(G1))+ROWS(INDIRECT(G1))-1,COLUMN(INDIRECT(G1))+$G$2-1)

这将显示第三列的地址。然后在 G4 中输入:

=MATCH("Happiness",INDIRECT(G3),0)

例如:

enter image description here