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

对于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中的最大长度是有限的。

有没有什么办法可以重新使用这个公式,这样每一列都不会变得更深?

好吧,让我们来看看。 尝试这个

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

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

希望有所帮助。

在一个单元格中,你可以用一个数组公式来做到这一点:

Isnumber在Excel 2007中提供testing

乘以列()的结果

使用if语句来帮助下面的min函数:

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

请记住,如果要制作数组公式,请使用Ctrl-Shift-Enter,而不是仅input。

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

如果你需要这个function,这也可以find跨越多行的第一个使用的列。

也许这可能有助于XL:如何确定稀疏arrays中顶部/底部使用的单元格

外国人回答作品(假设第一个号码后面的单元格全部填满)。

您也可以在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