- ベストアンサー
エクセル 日数の求め方
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と数字を求めるられるのでしょうか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「次の」が必要なら、関数では処理できません。検索コマンドを使用してVBAでプログラムを組んでください。 あと、単純な方法としては、C列の1行目に「=if(B1=5,"○","×")」と入力して各行にコピーすれば、B列が5の日は目視ですぐに探せるでしょう。計算式の「5」を変数にすれば5以外の数値のところもすぐ探せます。
その他の回答 (4)
=INDEX(A2:A$1000,MATCH(B1,B2:B$1000,0))-A1
お礼
大変参考になりました。ご回答ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
何行後に出てくるか=何日後に出てくるか、と考えて ユーザー関数を作ってみました。 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 以下略
お礼
すいません。 難しすぎてよくわからないです。。。 もっと勉強してから出直してきます。 ご回答ありがとうございます。
- papayuka
- ベストアンサー率45% (1388/3066)
「日付は連続している」という条件ならば、日数計算と言うより次に出てくる行数を調べれば良い事になりますが如何でしょう? 例えば、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
お礼
すいません。土日は日付ないデータなのです。 ご回答ありがとうございます。
- deecyan
- ベストアンサー率38% (89/233)
C列に =INDEX(A2:A$9999,MATCH(B1,B2:B$99,0),1) と入れて 書式を 日時にして 下にコピーします
お礼
試してみたら出来ました。 大変参考になりました。ご回答ありがとうございます。
お礼
なるほど! 大変参考になりました。ご回答ありがとうございます。