行=データの名前 列=月ごとの金額
4月 5月 6月 ・・・ 1月 2月 3月
データA 12 3 … 6 なし なし
データB なし 6 2 なし なし なし
データC なし 3 なし 5 なし 10
上記のようなデータがあるとします。
(実際は10000行ほどありますが・・・)
自分が知りたいのは4月から3月までの期間内で数字が入っているセルがあり、
その一番過去のセルから一番最新のセルまで何マスあるかカウントできる関数です。
つまり
データAだったら10
データBだったら2
データCだったら11
と返す関数が知りたいのです。
Countでは当然入力している関数しかカウントしないため無理でした。
言葉での説明が難しいのですが、どなたか上記内容が解決する関数数式をご存知でしたら
ご教示願います。
念のため画像も添付いたします。
これでどうですか。
=MAX(IF(B2:M2<>"",COLUMN(B2:M2),-1))-MIN(IF(B2:M2<>"",COLUMN(B2:M2),""))+1
入力方法は 1 の回答と同じです。
例えばB2からM2にデータがあったら次ぎの数式を入れて、Ctrl+Shift+Enterで配列数式にしてください。
=LARGE(IF(B2:M2="",0,COLUMN(B2:M2)),1)-SMALL(IF(B2:M2="",14,COLUMN(B2:M2)),1)+1
後は下にオートフィルです。
でも、1万行だと配列数式は重くなるかもしれません。
その場合はVBAかな。
ありがとうございます!
しかし#VALUEとのこと…
対象期間が24ヶ月や36ヶ月とかになったら式の中の「14」などの数字も変わるのでしょうか。
これでどうですか。
=MAX(IF(B2:M2<>"",COLUMN(B2:M2),-1))-MIN(IF(B2:M2<>"",COLUMN(B2:M2),""))+1
入力方法は 1 の回答と同じです。
ありがとうございます。
しかし同じく#VALUEでした・・・
元データが悪いのかと思い、新規エクセルで一行だけ数字を入れてみて試したのですが、
ダメでした…
エクセル2003だとダメなどありますでしょうか?
コメント欄が空いていないのでここに書き込ませていただきます。
> しかし同じく#VALUEでした・・・
たぶん入力方法が悪いのだと思います。
数式を入力した後に 1 に書いてある通り、Shift+Ctrl+Enter を押して入力してください。
そうすると、数式の両側に{}が付いて以下のようになります。
{=MAX(IF(B2:M2<>"",COLUMN(B2:M2),-1))-MIN(IF(B2:M2<>"",COLUMN(B2:M2),""))+1}
これでちゃんと計算できるようになると思いますので、再度トライしてみてください。
セルにあわせてShift+Ctrl+Enter を押してました!
式の後にカーソルを合わせてShift+Ctrl+Enter を押せばよかったのですね!
ありがとうございます!
ありがとうございます。
しかし同じく#VALUEでした・・・
元データが悪いのかと思い、新規エクセルで一行だけ数字を入れてみて試したのですが、
ダメでした…
エクセル2003だとダメなどありますでしょうか?