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


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

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

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

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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/01/26 14:59:48
  • 終了:2011/01/26 16:49:38

ベストアンサー

id:ootatmt No.2

ootatmt回答回数1307ベストアンサー獲得回数652011/01/26 16:29:06

ポイント40pt

これでどうですか。

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

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

id:Sat0sh1

ありがとうございます。

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

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

ダメでした…

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

2011/01/26 16:37:55

その他の回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692011/01/26 16:12:20

ポイント40pt

例えば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かな。

id:Sat0sh1

ありがとうございます!

しかし#VALUEとのこと…

対象期間が24ヶ月や36ヶ月とかになったら式の中の「14」などの数字も変わるのでしょうか。

2011/01/26 16:23:37
id:ootatmt No.2

ootatmt回答回数1307ベストアンサー獲得回数652011/01/26 16:29:06ここでベストアンサー

ポイント40pt

これでどうですか。

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

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

id:Sat0sh1

ありがとうございます。

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

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

ダメでした…

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

2011/01/26 16:37:55
id:ootatmt No.3

ootatmt回答回数1307ベストアンサー獲得回数652011/01/26 16:42:51

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


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


たぶん入力方法が悪いのだと思います。

数式を入力した後に 1 に書いてある通り、Shift+Ctrl+Enter を押して入力してください。

そうすると、数式の両側に{}が付いて以下のようになります。

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

これでちゃんと計算できるようになると思いますので、再度トライしてみてください。

id:Sat0sh1

セルにあわせてShift+Ctrl+Enter を押してました!

式の後にカーソルを合わせてShift+Ctrl+Enter を押せばよかったのですね!

ありがとうございます!

2011/01/26 16:47:25
  • id:SALINGER
    実際に動作テストはしています。
    やっていることは
    式の前半。セルごとに空白なら0、違う場合は列番号を返す配列から一番大きい数、つまり右端の列番号を返す。
    式の後半。セルごとに空白なら14、違う場合は列番号を返す配列から一番小さい数、つまり左端の列番号を返す。
    その差に1を足す。です。
    やっていることは、2つの回答どちらも同じです。
     
    >対象期間が24ヶ月や36ヶ月とかになったら式の中の「14」などの数字も変わるのでしょうか。
    これは別に表の右端の列番号よりも大きい数字ならなんでもいいです。24ヶ月なら見出しを含め26以上ですね。
  • id:ootatmt
    1, 2 とも動作は同じですが、すべて空欄の時の結果が少し異なります。
    実用上は問題ないかも知れません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません