dynamic表:INDIRECT和INDEX来比较数组公式中的单元格内容
概述 :我正在尝试使用INDIRECT与INDEX,ROW和COLUMN结合来获得一个dynamic表。
问题 :
- 对于Worksheet1中给定列的每个单元格,请在其左侧读取该单元格的内容。
- 将Worksheet2中的列的内容与读取的内容进行比较。
- 对于每个匹配,从Worksheet2中获取一个variables的值。
- 评估find的值的最大值,将其复制到Worksheet1原始单元格中。
我怎么做(显然是错的) :
{=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101))}
我期望它做什么:
-
INDIRECT(ADDRESS(ROW();COLUMN()-1;4))
—将内容读取到工作表1中左侧的单元格 -
'Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4))
—获得一个TRUE / FALSE值的数组,其中TRUE是在Worksheet 2列A包含值previousl -
IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101)
每个TRUE,从工作表2的列D中提取相应的值 -
{=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101))}
—从COLUMN D提取的值中,取MAX
我得到了什么 :一个#VALUE! 错误。
有人能解释我为什么提出一个可行的替代?
这是因为您的INDIRECT
单元格引用是数组公式的一部分,所以您可以使用{"A1"}
而不是"A1"
。
这可以通过使用MAX
解决,例如:
{=MAX(IF('Worksheet 2'!$A$4:$A$101=MAX(INDIRECT(ADDRESS(ROW();COLUMN()-1;4))); 'Worksheet 2'!$D$4:$D$101))}
(看起来你也有一些括号不合适)
更新:
这是一个更好的版本,可以用于你的文本列(在ROW
和COLUMN
函数中使用MAX
):
=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(MAX(ROW());MAX(COLUMN())-1;4)); 'Worksheet 2'!$D$4:$D$101))