Excel函数返回范围中的第一行或第一列?(用于更好地在数据表中进行双向查找)

Excel函数返回范围中的第一行或第一列?(用于更好地在数据表中进行双向查找),excel,worksheet-function,Excel,Worksheet Function,因此,我尝试从数据表中执行经典的双向查找,即: Jan-00 Feb-00 Mar-00 Joe Bill Steve 所以,我想查找“Joe”和“Mar-00”的值 这种类型的查找通常使用索引和匹配函数的组合来完成。这种方法的缺点是MATCH只能作用于一维范围,因此在包含大量表格的大型电子表格中,您最终必须为每个表格定义3个范围,而不是一个(一个用于数据,一个用于标题行,一个用于左列) 我希望能够做到这样: index(data1,match("Mar-00",getrow

因此,我尝试从数据表中执行经典的双向查找,即:

     Jan-00   Feb-00   Mar-00
Joe
Bill
Steve
所以,我想查找“Joe”和“Mar-00”的值

这种类型的查找通常使用索引和匹配函数的组合来完成。这种方法的缺点是MATCH只能作用于一维范围,因此在包含大量表格的大型电子表格中,您最终必须为每个表格定义3个范围,而不是一个(一个用于数据,一个用于标题行,一个用于左列)

我希望能够做到这样:

index(data1,match("Mar-00",getrow(mydata,1)),match("Joe",getcolumn(mydata,1)))

excel中是否有类似的功能(或者,一种完全不同的方式,可能是excel中的一些新功能)?

虽然这可能不是最有效的方法,但您可以使用SUMPRODUCT来完成此请求。不过,您需要做的是创建一个包含这些值的工作表,然后在显示表中引用它们

=SUMPRODUCT(--('RawData'!$A$1:$A$4="Joe"),--('RawData'!$B$1:$B$4="Mar-00"),'RawData'!$C$1:$C$4)
其中:

  • “原始数据”$A$1:$A$4是包含名称的列
  • “原始数据”$B$1:$B$4是包含所需标题的列(在本例中为日期)
  • “原始数据”$C$1:$C$4是包含所需值的列

    • 这是
      VLOOKUP
      (或相关的
      HLOOKUP
      )的经典用法:

      您还可以使用
      INDEX
      通过将零作为参数之一传递,从范围(或二维数组)中获取整行或整列:

      =VLOOKUP("Joe", mydata, MATCH("Mar-00", INDEX(mydata, 1, 0), 0), FALSE)
      
      这是假设“mydata”是整个表,包括行和列标题


      (当然,您也可以执行上面的操作,将
      getrow
      getcolumn
      替换为对
      INDEX
      的调用)

      使用
      offset
      公式。对于某些命名范围myrange,第一行是:

      offset(myrange,0,0,1)
      
      类似地,第一列为:

      offset(myrange,0,0,,1)
      

      我意识到这是正确的,但我不一定知道我是在追求第四栏。使用索引需要我重新声明一个范围,因为它只能作用于一维范围。这是我的第二个示例的要点-演示如何使用
      INDEX
      从范围或数组中获取整行(列)。这不是你的问题吗?对不起,你是对的,我只是读得不够仔细。非常好,谢谢!不要认为我以前遇到过这种语法,或者我遇到过,只是错过了。
      offset(myrange,0,0,,1)