0

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 では最大長が制限されているため、これは 7 列でしか機能しません。

この数式を言い換えて、列を追加するたびに深くならないようにする方法はありますか?

4

4 に答える 4

3

わかりました、見てみましょう。これを試して

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

sumproduct は空白の数をカウントし、インデックスはセル内の値を検索します。number of blanks + 1

それが役立つことを願っています。

于 2009-11-13T11:28:20.167 に答える
2

単一のセルでは、配列数式を使用してこれを行うことができます。

Isnumber は Excel 2007 でテストを提供します

結果に column() を掛けます

if ステートメントを使用して、次の min 関数を支援します。

min 関数を使用して、最初の数値列を識別します。

入力するだけでなく、配列数式を作成する場合は、Ctrl-Shift-Enter を使用することを忘れないでください。

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

これにより、その機能が必要な場合に、複数の行にわたって最初に使用された列も検出されます。

于 2009-11-13T15:51:41.893 に答える
1

おそらくこれはXLに役立つかもしれません:スパース配列で使用されているセルの上部/下部を判別する方法

于 2009-11-13T11:32:58.897 に答える
1

astanders answer は機能します(最初の数字に続くセルが常に満たされているという前提で)。

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
于 2009-11-13T16:14:36.870 に答える