多列Excel范围中的最长列(在单个公式中)?

Mik*_*use 6 excel excel-formula

在不同列可能具有不同数量的值的范围内(但列中的序列中不会有间隙),我想知道最长列的长度.为了要求更高,我想在一个单一的公式中.

所以考虑到这样的范围:

      |  A   B   C   D
   ---+---+---+---+---
    1 |  1   2   3   4
    2 |  2   9   5   6
    3 |      5   5
    4 |          4
    5 |
Run Code Online (Sandbox Code Playgroud)

..我想要的答案是4.

在这种情况下有效的东西是

=MAX(COUNT(A1:A999),COUNT(B1:B999),COUNT(C1:C999),Count(D1:D999))
Run Code Online (Sandbox Code Playgroud)

但它是(a)丑陋和(b)不灵活 - 不适合可能添加列的情况.

我试过这样的东西,希望有一个数组给出一组列数(希望包围MAX()它):

{=COUNT(OFFSET(A1,0,COLUMN(A1:D1)-COLUMN(A1),999,1))}
Run Code Online (Sandbox Code Playgroud)

..但它只提供一个单元格,它似乎总是第一列的计数.

我知道这可以很容易地在VBA中解决,但出于几个原因(尤其是好奇心),我想看看它是否可以在单个(可能是数组)公式中解决.

lor*_*i_m 6

也许用CTRL + SHIFT + ENTER尝试这个:

=MAX(SUBTOTAL(3,OFFSET(A:D,,COLUMN(A:D)-MIN(COLUMN(A:D)),,1)))
Run Code Online (Sandbox Code Playgroud)

可以使用任何矩形范围代替A:D.

  • 公式的`OFFSET(...)`部分在数组输入时返回一个由范围引用组成的数组.`SUBTOTAL`作用于数组中的每个引用并返回一个值数组但是`COUNTA`和其他汇总函数只有在作为参数提供数组时才返回单个值 (2认同)