• ベストアンサー

エクセル  日数の求め方

A列には      B列には 2007/10/1     5 2007/10/2     3 2007/10/3     4 2007/10/4     6 2007/10/5     5 ・ ・ ・ A列は昇順に日付が入っていて B列にはランダムに数字が入っています。 やりたいことは たとえばB1セルの「5」を基準値として 次に「5」がくるのは何日後かを知りたいです。 4日後になると思うのですが どうやったら4と数字を求めるられるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#46899
noname#46899
回答No.2

「次の」が必要なら、関数では処理できません。検索コマンドを使用してVBAでプログラムを組んでください。 あと、単純な方法としては、C列の1行目に「=if(B1=5,"○","×")」と入力して各行にコピーすれば、B列が5の日は目視ですぐに探せるでしょう。計算式の「5」を変数にすれば5以外の数値のところもすぐ探せます。

lkhjlkhjlk
質問者

お礼

なるほど! 大変参考になりました。ご回答ありがとうございます。

その他の回答 (4)

noname#204879
noname#204879
回答No.5

=INDEX(A2:A$1000,MATCH(B1,B2:B$1000,0))-A1

lkhjlkhjlk
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

何行後に出てくるか=何日後に出てくるか、と考えて ユーザー関数を作ってみました。 Function fnd(a, b) r = a.Row c = a.Column s = Columns(c).Find(what:=b, after:=a, searchorder:=xlByColumns).Row fnd = s - r End Function 例データB列 5 4 2 6 2 3 5 2 6 7 8 5 6 1 2 3 4 5 C1に =fnd(B1,5)  で6 C2に =fnd(B7,5)  で5 C3に =fnd(B12,5)  で6 しかし第1引数をいつも上例で5の行を指定しなければならず 使い物にならないかも。 ー いっそのこと、VBAで5の行を全てリストアップして、行番号を出すとか、差を出すのが良いのかもしれない。 ーー あるいはその行のB列の値は次ぎは何行目に出るかを上記関数で出す。 これなら式の複写が使える。 B1に =fnd(B1,B1) と入れて式を下方向に複写。 結果 6 15 2 5 3 10 以下略

lkhjlkhjlk
質問者

お礼

すいません。 難しすぎてよくわからないです。。。 もっと勉強してから出直してきます。 ご回答ありがとうございます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

「日付は連続している」という条件ならば、日数計算と言うより次に出てくる行数を調べれば良い事になりますが如何でしょう? 例えば、A列、B列ともにタイトル行を含まないリストであるとした場合、セル C1 に =MATCH(B1,INDIRECT("B"&ROW()+1&":B"&MATCH(MAX(A:A),A:A,0)),0) としてセル C3 までコピーした場合、下記のように出ましたよ。 2007/10/1  5  4 2007/10/2  3  2 2007/10/3  4  3 2007/10/4  3 2007/10/5  5 2007/10/6  4

lkhjlkhjlk
質問者

お礼

すいません。土日は日付ないデータなのです。 ご回答ありがとうございます。

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

C列に =INDEX(A2:A$9999,MATCH(B1,B2:B$99,0),1) と入れて 書式を 日時にして 下にコピーします

lkhjlkhjlk
質問者

お礼

試してみたら出来ました。 大変参考になりました。ご回答ありがとうございます。

関連するQ&A