人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルについて質問です。

行=データの名前 列=月ごとの金額

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では当然入力している関数しかカウントしないため無理でした。

言葉での説明が難しいのですが、どなたか上記内容が解決する関数数式をご存知でしたら
ご教示願います。

念のため画像も添付いたします。

1296021587
●拡大する

●質問者: Sat0sh1
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:1月 3月 4月 5月 6月
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●40ポイント

例えば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」などの数字も変わるのでしょうか。


2 ● ootatmt
●40ポイント ベストアンサー

これでどうですか。

=MAX(IF(B2:M2<>"",COLUMN(B2:M2),-1))-MIN(IF(B2:M2<>"",COLUMN(B2:M2),""))+1

入力方法は 1 の回答と同じです。

◎質問者からの返答

ありがとうございます。

しかし同じく#VALUEでした・・・

元データが悪いのかと思い、新規エクセルで一行だけ数字を入れてみて試したのですが、

ダメでした…

エクセル2003だとダメなどありますでしょうか?


3 ● ootatmt
●0ポイント

コメント欄が空いていないのでここに書き込ませていただきます。


> しかし同じく#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 を押せばよかったのですね!

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ