【问题标题】:Searching 2D Excel array for a value, returning the value of the adjacent cell在二维 Excel 数组中搜索一个值,返回相邻单元格的值
【发布时间】:2015-01-24 07:50:13
【问题描述】:

在过去的 2 节编程课程中,我一直在搜索这个网站,并决定加入这个美妙的社区是值得的!

简而言之,我想创建一个“发票制造商”,它允许首先通过 A1 中的下拉框选择一个类别,然后在 B1 中通过下拉框选择该类别中的一个项目。然后 Excel 将在下一列 C1 中自动填充价格。

基本上是 2 个(不知道如何称呼它:级联、嵌套、依赖)下拉框,当两者都填充时,返回一个价格。例如:

  A        B    C
1 Category Item [Price]

两个下拉菜单都使用引用定义名称的数据验证,该名称基于工作表“数据库”中的数组。这张表的格式如下:

category1 price category2 price category3 price category4 price ...
item1     $xx   item1     $xx   item1     $xx   item1     $xx
item2     $xx   item2     $xx   item2     $xx   item2     $xx

我使用这种列排列主要是因为它允许每个类别无限扩展。如果您看到更简单的方法,请告诉我!

本质上,要在 C1 中打印价格,我的目标是在 2D Excel 数据库中找到项目名称,并立即返回其右侧的单元格。理想情况下,C1 中的公式将使用单元格 A1 来确定要搜索的类别,并在此列中搜索 B1 中的相应项目名称。然后,它将向右 +1 偏移,从而引用价格。

就公式而言,我有一些粗略的伪代码,但我对 VLOOKUP、OFFSET、MATCH 和 INDEX 感到困惑。基本上:

=INDEX( "defined name of my entire database" , MATCH( B1, **column corresponding to chosen component** , 0 ) + 1 , MATCH( A1 , components , 0 ) )

在我看来,INDEX 将返回给定列中 row+1 项的值。第一个 MATCH 将找到找到该项目的行,第二个 MATCH 将确定找到该类别的列。

现在我的问题是,如何使第一个 MATCH 仅搜索与正确类别对应的列?

老实说,我不知道我的伪代码是否正确。我把它翻译成公式,它只是在单元格中返回#N/A。

非常感谢您的帮助!!!

【问题讨论】:

    标签: excel range names invoice defined


    【解决方案1】:

    我会尝试以下方法:

    获取数据库表的第一列并将其向右偏移这么多列,搜索类别与左侧的偏移量。然后我们有这个类别的价格列,因为如果它匹配第一个类别,我们将它偏移 1 列,如果它匹配第二个类别,则偏移 3 列,依此类推。

    从此列中表示与找到的offset-1列(类别列)中与搜索项目名称匹配的行相同的行中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2014-02-28
      • 2021-10-28
      • 2018-03-12
      • 2017-08-25
      • 1970-01-01
      相关资源
      最近更新 更多