我正在尝试在 Excel 中使用数组函数,该公式用于返回已过滤表的值。这是我的公式:
{=INDEX(A:A,MIN(IF(SUBTOTAL(3,OFFSET(A2,ROW(A2:A31)-ROW(A2),0)),ROW(A2:A31))))}
问题是返回的值只是第一个结果,即如果过滤后第一个单元格是A9
当我向下拖动公式时,它只会返回A9
所有单元格中的值。这是我第一次尝试使用数组函数,所以我不知道要检查什么,我认为公式本身是正确的,但因为这是我的第一次尝试,也许我错过了一些东西。我已经按++Ctrl进行验证了。ShiftEnter
实际上,我的目标是返回符合特定条件的单元格的值,我尝试使用不同的函数,但因为它太复杂了,所以我尝试使用 Excel 内置过滤器,但因为它只隐藏了不符合条件的单元格,所以它无法与使用过滤值的其他公式一起使用。我更喜欢不太复杂或使用 VBA 的解决方案。
答案1
我之前问过同样的问题,并得到了很好的答复罗恩·科德尔
他建议使用数组和非数组公式解决方案。公式很复杂。我提供了一种非常简单、直观的方法,即使用简单的非数组公式和辅助列。
假设我们有列中的数据A和乙。 在C2进入:
=SUBTOTAL(3,$A$2:$A2)
并向下复制:
辅助列是一组简单的连续值。我们现在过滤狗:
助手已调整为保持简单的顺序序列!这使我们能够使用标准MATCH()/INDEX()
方法来获取可见数据。在Sheet2
单元格中A1进入:
=IFERROR(INDEX(Sheet1!A:A,MATCH(ROWS($1:1),Sheet1!C:C,0)),"")
并向下复制:
如果您不能使用辅助列,请尝试 Coderre 公式之一。
答案2
在索引前使用转置函数。或者水平返回该函数。