【发布时间】: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