在我最近的两个编程课程中,我一直在搜索这个网站,并决定值得加入这个神话般的社区!
简而言之,我想创建一个"发票制造商",它允许人们首先通过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.
非常感谢您的帮助!!!
答案 0 :(得分:0)
我会尝试以下方法:
获取数据库工作表的第一列并将其偏移到正确的列,以便搜索的类别如何从左侧偏移。然后我们有这个类别的价格列,因为如果它与第一个类别匹配,我们将它偏移1列,如果它与第二个类别相匹配则为3,依此类推。
从此列开始,指示行中的值,该值与找到的offset-1列(类别列)中与搜索到的项目名称匹配的行相同。