2009-11-13 53 views
0

對於Excel公式我需要出其中包含的數值小區列表的第一個單元格:如何規避Excel的IF函數的深度限制?

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

是否有任何方法重新組合這個公式,以便它不會深入每一列?

回答

3

好吧,讓我們看看。試試這個

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

的SUMPRODUCT計算空格的數量,那麼指數查找在number of blanks + 1

希望幫助該單元格的值。

+0

不應該是'countif(A1:Y1,「」)'? – marg

+0

你試過這個公式嗎? –

+0

因此,我的答案是:「阿斯達爾斯回答作品」。 我更好奇你爲什麼選擇sumproduct而不是countif。它表現更好還是個人喜好? – marg

2

在單細胞可以用數組公式做到這一點:

ISNUMBER通過柱提供測試在Excel 2007

乘法結果()

使用if語句來幫助下面的min函數:

使用min函數來標識第一個數字列。

當您想要製作數組公式時,請記住使用Ctrl-Shift-Enter,而不是僅輸入。

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

如果您需要該功能,還會發現跨多行的第一個使用的列。

1

阿斯達爾斯答案的作品(假設第一個數字後的單元格填滿了)。

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