Excel 数式、最後の非ゼロ以降のセルの数を数える

Excel 数式、最後の非ゼロ以降のセルの数を数える

月ごとの売上を示す列がいくつかあります。たとえば、次の列は、2 か月前にこの顧客から 3,555 ドルの売上があったことを示している可能性があります。

0,0,0,0,0,0,0,0,0,3555,0,0

前回の販売からの月数を計算する数式が必要です。つまり、この場合の結果は 2 になるはずです。

答え1

Jook の回答をさらに詳しく説明します。

1 か月目から 12 か月目の売上値がセル A1:L1 にあると仮定します。

配列数式を使用して目的の結果を得ることができます。

=COLUMN(L1)-MAX(IF(A1:L1>0,COLUMN(A1:L1),0))

数式を入力し、Ctrl+ Shift+と入力しEnter て配列数式として指定します。Excel は自動的に中括弧を表示します。

{=COLUMN(L1)-MAX(IF(A1:L1>0,COLUMN(A1:L1),0))}

(中括弧は入力しないでください。)

これにより、売上高が 0 より大きいセルの列番号を保持する仮想配列が作成され、最大の列番号 (つまり、レポート期間の終了に最も近い列番号) が検索されます。次に、最後の列の番号からこの値を減算する必要があります。

答え2

この問題に対する簡単な解決策はここにあります。ただし、ヘルパー行が必要なので、改善の余地があります。ここからは他の誰かが対応してくれるかもしれません。

セットアップは次のとおりです:

month 1 2 3 4 5 6 7 8 9 10 11 12
sale  0 0 0 0 5 0 0 0 8 11 0  0 
help  0 0 0 0 5 0 0 0 9 10 0  0

ヘルプ式:

IF(SALE>0,MONTH,0) - IF(A2>0,A1,0)

前回の販売から経過した月数:

MAX(A1:L1)-MATCH(MAX(A3:L3);A3:L3;0)

主な問題は、売上値が 0 より大きい最大列番号を取得することです。現時点では、ヘルパー行なしでこの問題を解決するには、VBA とマトリックス関数しか思いつきません。しかし、何かが足りないような気がします。

関連情報