Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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_If Statement_Excel Formula_Array Formulas_Structured References - Fatal编程技术网

Excel 从表中返回多个项

Excel 从表中返回多个项,excel,if-statement,excel-formula,array-formulas,structured-references,Excel,If Statement,Excel Formula,Array Formulas,Structured References,我有一个Excel文件和两张表格。在“表1”中,我将数据格式化为表格。它有三列: MyData[Name] MyData[Month] MyData[sales] 在“表2”中,我想从MyData中选择符合标准的多个项目(即MyData[Name]=John) 我发现这是一个很好的解释如何做到这一点的数组公式,它结合了索引、小数组、行和IFs。问题是,在视频中,他们使用带有硬编码行号的规则范围 是否有一种方法可以进行此选择,但要使用列名而不是硬编码的范围 是的,

我有一个Excel文件和两张表格。在“表1”中,我将数据格式化为表格。它有三列:

MyData[Name]         MyData[Month]         MyData[sales]
在“表2”中,我想从
MyData
中选择符合标准的多个项目(即
MyData[Name]
=
John

我发现这是一个很好的解释如何做到这一点的数组公式,它结合了索引、小数组、行和IFs。问题是,在视频中,他们使用带有硬编码行号的规则范围


是否有一种方法可以进行此选择,但要使用列名而不是硬编码的范围

是的,虽然我不确定是否使用结构化引用进行相对引用,因此提供两个数组公式,假设您的选择标准(例如
John
)在第二页的A1中:

在B1中:

=IF(ROWS(A$1:A1)<=COUNTIF(MyData[[#All],[Name]],$A$1),INDEX(MyData[[#All],[Month]],SMALL(IF(MyData[[#All],[Name]]=$A$1,ROW(MyData[[#All],[Name]])-ROW(MyData[[#Headers],[Name]])+1),ROWS(B$1:B1))),"")  

=IF(ROWS(A$1:A1)在构建公式时,通常不需要point and select on table对象附带的所有参数。与宏记录器生成的详细代码非常相似,自动生成的表范围引用用于处理各种情况,某些部分可能不需要或不需要

G4:H4中的标准公式为

=IFERROR(INDEX(MyData[Month], AGGREGATE(15, 6, ROW(MyData)-ROW(MyData[#Headers])/(MyData[Name]=$F$4), ROW(1:1))), "")
=IFERROR(INDEX(MyData[Sales], AGGREGATE(15, 6, ROW(MyData)-ROW(MyData[#Headers])/(MyData[Name]=$F$4), ROW(1:1))), "")
这将以其形式使用强制在任何不匹配的行上出错,然后在检索多个匹配项时忽略这些错误


是在Excel 2010中引入的。它在以前的版本中不可用。

您的数据样本是什么样的?请举例说明您的尝试
=IFERROR(INDEX(MyData[Month], AGGREGATE(15, 6, ROW(MyData)-ROW(MyData[#Headers])/(MyData[Name]=$F$4), ROW(1:1))), "")
=IFERROR(INDEX(MyData[Sales], AGGREGATE(15, 6, ROW(MyData)-ROW(MyData[#Headers])/(MyData[Name]=$F$4), ROW(1:1))), "")