使用INDIRECT()和INDEX()函数

时间:2014-04-11 23:03:51

标签: excel excel-formula

我有一个我希望建立的公式,能够向下拖动到多个行的自动完成。

=COUNTA(INDEX(1:100,0,ROW(A1)))

此公式的目的是计算每列中非空白单元格的数量。我知道我可以使用另一种公式...

=COUNTA(EIM!A$1:A$100)

...并拖动它,粘贴特殊值然后粘贴特殊转置它,但我想知道是否有另一种(更优雅)的方式。正如您在第二个公式中看到的那样,我想要提取另一个工作表的值。因此,我认为INDIRECT()是要走的路。

我的问题是:如何使用INDIRECT()与我的第一个使用INDEX()函数的公式结合使用?

以下是评估当前公式的屏幕截图(不确定是否有帮助):

screenshot

1 个答案:

答案 0 :(得分:4)

当然你可以,但是你呢?

为此,您可以使用R1C1样式,通过间接指定false

=COUNTA(INDIRECT("EIM!R1C"&ROW(A1)&":R100C"&ROW(A1),FALSE))

或只是:

=COUNTA(INDEX(INDIRECT("EIM!$1:$100"),0,ROW(A1)))

通常情况下,如果你使用INDIRECT,你做错了。我看到的间接的唯一合理用例是(a)按公式选择另一个工作表(其中有在Excel中没有好办法)和(b)编写引用命名单元格的Excel教程示例。

如果您始终引用特定工作表,则使用:

=COUNTA(INDEX(EIM!$1:$100,0,ROW(A1)))

如果每列代表不同的工作表,则间接可能是可接受的。