对于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中的最大长度是有限的。
有没有办法重新表达这个公式,以便每增加一列都不会更深入?
答案 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