Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在二维Excel数组中搜索值,返回相邻单元格的值_Excel_Range_Names_Invoice_Defined - Fatal编程技术网

在二维Excel数组中搜索值,返回相邻单元格的值

在二维Excel数组中搜索值,返回相邻单元格的值,excel,range,names,invoice,defined,Excel,Range,Names,Invoice,Defined,我在上两节编程课中一直在浏览这个网站,我认为加入这个精彩的社区是值得的 简而言之,我想创建一个“发票制作人”,它允许人们首先通过A1中的下拉框选择一个类别,然后通过B1中的下拉框选择该类别中的项目。然后Excel将在下一列C1中自动填写价格 基本上有2个下拉框(不知道怎么称呼它:级联、嵌套、依赖),当两个下拉框都填满时,返回一个价格。例如: A B C 1 Category Item [Price] 两个下拉列表都使用引用定义名称的数据验证,该名称基于工作表“数据库”中

我在上两节编程课中一直在浏览这个网站,我认为加入这个精彩的社区是值得的

简而言之,我想创建一个“发票制作人”,它允许人们首先通过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 ) )
在我看来,索引将在给定列中返回行+1项的值。第一个匹配项将找到在其中找到项目的行,第二个匹配项将确定在其中找到类别的列

现在我的问题是,如何使第一次匹配搜索只搜索与正确类别对应的列

老实说,我不知道我的伪代码是否正确。我将其转换为公式,它只在单元格中返回#N/A


非常感谢您的帮助

我会尝试以下方法:

将数据库工作表的第一列向右偏移如此多的列,搜索的类别是如何从左侧偏移的。然后我们有了这个类别的价格栏,因为如果它匹配第一个类别,我们就抵消了1栏,如果它匹配第二个类别,我们就抵消了3栏,依此类推

从该列中,指示与“找到的偏移量-1”列(类别列)中与搜索项名称匹配的行相同的行中的值