如何规避Excel的IF函数的深度限制?

时间:2009-11-13 11:11:28

标签: excel excel-formula

对于Excel公式,我需要包含数值的单元格列表中的第一个单元格:

 A  |  B  |  C  | ... |  Z  |
-----------------------------
    | 0.1 | 0.4 | ... | =0.1
    |     | 0.2 | ... | =0.2

我使用这个架构:

IF(ISNUMERIC(A1);A1;IF(ISNUMERIC(B1);A2;IF(ISNUMERIC(C1);C1;IF(...))))))))

不幸的是,这仅适用于七列,因为Excel中的最大长度是有限的。

有没有办法重新表达这个公式,以便每增加一列都不会更深入?

4 个答案:

答案 0 :(得分:3)

好的,让我们看看。试试这个

=INDEX(A1:Y1,SUMPRODUCT((A1:Y1="")*1)+1)

sumproduct计算空白数,然后索引查找单元格中number of blanks + 1

的值

希望有所帮助。

答案 1 :(得分:2)

在单个单元格中,您可以使用数组公式执行此操作:

Isnumber在Excel 2007中提供测试

将结果乘以列()

使用if语句来帮助执行以下min函数:

使用min函数识别第一个数字列。

如果您想制作数组公式,请记住使用Ctrl-Shift-Enter,而不仅仅是输入。

=INDEX(A1:Z1,MIN(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1),5000)))

如果您需要该功能,这还会在多行中找到第一个使用过的列。

答案 2 :(得分:1)

答案 3 :(得分:1)

astanders回答有效(假设第一个数字后面的单元格全部被填充)。

您也可以在VBA模块中编写自己的功能。

Public Function getFirstNumber(ByRef sourceRow As Range) As Double
    For Each Cell In sourceRow.Cells
        If WorksheetFunction.IsNumber(Cell) = True Then
            getFirstNumber = Cell.Value
            Exit Function
        End If
    Next Cell
End Function