如何规避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