Excel 动态表:间接和索引,用于比较数组公式中的单元格内容
概述:我正在尝试使用间接与索引、行和列相结合的方法来实现动态表 问题:Excel 动态表:间接和索引,用于比较数组公式中的单元格内容,excel,excel-formula,array-formulas,excel-indirect,Excel,Excel Formula,Array Formulas,Excel Indirect,概述:我正在尝试使用间接与索引、行和列相结合的方法来实现动态表 问题: 对于工作表1中给定列的每个单元格,读取其左侧单元格的内容 比较工作表2中列的内容与已读列的内容 对于每个匹配,从工作表2中获取变量的值2 计算找到的最大值,将其复制到工作表1原始单元格中 我是怎么做的(显然是错的): {=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101))} 我
{=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101))}
我希望它能做什么:
间接(地址(行();列()-1;4))
——读取工作表1左侧单元格的内容“工作表2”$A$4:$A$101=间接(地址(行();列()-1;4))
——获取一个真/假值数组,其中在工作表2列A包含先前值的地方找到真如果('工作表2'!$A$4:$A$101=间接(地址(行();列()-1;4));'工作表2'!$D$4:$D$101)
——对于每个TRUE,从工作表2的D列中提取相应的值{=MAX(如果('工作表2'!$A$4:$A$101=间接(地址(行();列()-1;4));'工作表2'!$D$4:$D$101))
---从列D提取的值中,取最大值有人能给我解释一下原因并提出一个可行的替代方案吗?这是因为你的
间接单元格引用是数组公式的一部分,所以你得到的是{“A1”}
而不是“A1”
这可以通过使用MAX
来解决,例如:
{=MAX(IF('Worksheet 2'!$A$4:$A$101=MAX(INDIRECT(ADDRESS(ROW();COLUMN()-1;4))); 'Worksheet 2'!$D$4:$D$101))}
(看起来您的几个括号也放错了位置。)
更新:
这是一个更好的版本,适用于文本列(在行
和列
函数中使用MAX
):
从公式的编写方式来看,INDIRECT
似乎还有第二个参数,即“工作表2”$D$4:$D$101
。这是个错误吗?您的公式中可能缺少一个右括号。@ImaginaryHuman072889-括号在翻译中丢失了,我刚刚更正了它-不幸的是,这不是问题所在,但感谢您让我注意到我的间接指向单元格将包含文本而不是数字。有解决办法吗?使用MAX总是给我0作为返回值。我让它使用索引来访问该值!谢谢,这很有魅力,让我对数组公式的行为有了深刻的了解(:酷!我已经用更好的版本更新了我的答案。
=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(MAX(ROW());MAX(COLUMN())-1;4)); 'Worksheet 2'!$D$4:$D$101))