Excel 从表中返回多个项
我有一个Excel文件和两张表格。在“表1”中,我将数据格式化为表格。它有三列: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。问题是,在视频中,他们使用带有硬编码行号的规则范围 是否有一种方法可以进行此选择,但要使用列名而不是硬编码的范围 是的,
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))), "")