• ベストアンサー

エクセル  日数の求め方

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/17068)
回答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

  • エクセルの使い方を教えてください

    下記のような表をエクセル2007で作成したいのですが、可能でしょうか。 (画像を参照ください) (1)エクセルのA1セルから、縦に0001、0002・・と昇順に数字を入力します(A1000セルまで)。 (2)エクセルのB1セルから、縦に2012/8/12(任意の日付)、2012/8/13・・と昇順に日付を入力します(B1000セルまで)。ただし、日付が欠けている場合もありますし、同じ日が続けて入力される場合もあります。 (3)毎週月曜日に、B列の日付がその1週間前の月曜から前日の日曜に該当する同じ行のA列のセルに自動的に色を付けます。例えば、今日が2012/8/20(月)としたら、B列の日付が2012/8/13(月)から2012/8/19(日)に該当する同じ行のA列のセルを自動的に黄色に塗りつぶします。そして、次の週の2012/8/27(月)が来たら、同様にB列の日付が2012/8/20(月)から2012/8/26(日)に該当する同じ行のA列のセルを自動的に黄色に塗りつぶします。そして次の週の月曜も同様です(以下、繰り返し)。 (4)作成したエクセルは毎日開きますが、次の月曜日が来るまでは、同じ場所に黄色が塗られた状態を維持します。例えば2012/8/21(火)~2012/8/26(日)に毎日エクセルを開いた時もB列の日付が2012/8/13(月)から2012/8/19(日)に該当する同じ行のA列のセルが自動的に黄色に塗りつぶされた状態を維持します。 いろいろ考えてはみたのですが、わかりませんでした。どうかお知恵をよろしくお願いいたします。 ●画像の文章が見づらいので、こちらに書いておきます (例) 2012/8/20(月)にB列が2012/8/13(月)~2012/8/19(日)に該当するA列の0002~0008が自動的に黄色に塗りつぶされる。2012/8/21(火)~2012/8/26(日)の毎日このエクセルを開いても0002~0008が黄色に塗りつぶされた状態が維持される。           ↓ 2012/8/27(月)にB列が2012/8/20(月)~2012/8/26(日)に該当するA列の0009~0015が自動的に黄色に塗りつぶされる。 2012/8/28(火)~2012/9/2(日)の毎日このエクセルを開いても0009~0015が黄色に塗りつぶされた状態が維持される。 (以下、月曜日毎に繰り返し)

  • エクセルの質問です

    A列は空白 B列に商品をあらわ5桁のコードが入っています。 C列にも同じく商品を表す5桁のコードが入っているのですが、 B列のセルと隣り合ったセルには同じ数字が入っていません。 D列には取引先の会社名が入っています。     B1に入ってる5桁の数字と同じ数字が入っている C列のセルを探し、 そのセルの隣のD列の会社名をA1のセルに表示させたいのですが、 どう関数を組んだらいいのでしょうか? A   B    C   D     12345 12354 A社    12334 12345 B社    12443 12544 C社 上の表の場合B1とC2数字が同じなのでA1にB社と表示させたいのです。  B列が昇順で並んでいる C列とD列は重複しない という条件で <=vlookup(b1,c:d,2,false)> という回答を頂いたのですが、 B列が昇順で無い(ランダムに数字が入っています) D列には同じ会社名が何度も出てきます。 どうすればいいのかわかる方お願いします。

  • エクセルの関数

    A列に約500行に渡ってランダムに5桁の数字(10000~99999でこの間抜けている数字はある)があります。(重複する数字はありません。)  ここで、例えばB列にA列にある30000~39999までの該当する数字をB1、B2、B3・・・・と該当する数字だけ昇順に全部抽出したいのですが、この場合の式を教えて下さい。

  • エクセル関数(抽出)について

    宜しくお願い致します。 A列にランダムな数字が入力されている。(重複する数字はなく、空セルなし) B列にランダムな数字が入力されている。(重複する数字があり、空セルあり) ここで、B列に入力されているA列のセルの数字を全部B列降順に抽出したいのです。(以下のような場合です)    A   B 1  7  200 2  2  100 3  5  4  3  100  5  8   50 これを以下のようにする方法を教えて下さい。 200 7 100 2 100 3  50 8

  • エクセル関数(抽出)について

    宜しくお願い致します。 A列にランダムな数字が入力されている。(重複する数字はない) B列にランダムな数字が入力されている。(重複する数字がある) ここで、A列のセルの数字をB列の任意値分全部抽出したいのです。    A   B 1 815  9 2 330  8 3 209  6  4 110  9  5  24  9 6 782  5 7   3  9 これを以下のようにする方法を教えて下さい。 9 815 9 110 9  24 9   3 ※このA列の”9”もセルの中で指定したいのです。

  • エクセルにおいて、検索した個数表示について

    表を作るのに困っていますので、よろしくお願いします。 例えば、 A列A1~A20までのセルに、1~3までの数字がランダムに入っています。 BとDとF列のセルに、あ~おまでの文字が、ランダムに入っています。 A列の数字が1のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 A列の数字が2のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 A列の数字が3のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 という表を作りたいのですが、どうしたら良いでしょうか。 よろしくお願いします。

  • エクセル 特定の文字の横のセルを置換する方法

    エクセルの関数について教えてください。 例えば A1のセルに「基準日」と入力してあって、B1に基準となる日付が入っているとします。 製品の数だけ、基準日の項目があり、週1回、この日付を手入力で上書き修正しています。 最終的に製品毎に列を切り離して数字を集計するため、単純なセル参照ではなく、基準日に日付を入力したいです。 また、基準日意外にも日付が沢山使われており、「12/3→12/10」と置換すると、基準日以外の日付も変わってしまうため使えません。 そこで、「基準日の横のセルを12/10に置換する」のような操作はできるのでしょうか? 宜しくお願いします。

  • EXCEL マクロ 文字列を種類分けして並べ替え

    みなさんいつもいろいろ教えていただきありがとうございます。 マクロ初心者の者です。 さて、早速ですが以下の内容を実現できるマクロを 教えていただけませんでしょうか?     A 1 A********* 2 0********* 3 1********* 4 3********* 5 ****** 6 BAE****** 7 BSE****** ・A列に上記のような文字列が入力されています。  (※注文番号)(数十~最大100行くらいまで) *にはランダムに数字が入ります。 A列の並び順、数はランダムです ・B列にはA列からVLOOKUPを使って得た日付(納期)が入ります。 例(B1セル)⇒=VLOOKUP(A1,納期リスト,2,FALSE)   結果 2/20 と表示されている ・C列にはA列からVLOOKUPを使って得た、客先名が入ります。 例(C1セル)⇒=VLOOKUP(A1,納期リスト,3,FALSE)   結果 ***商店 などと表示されている ■この場合に、アルファベット3文字から始まるA6,A7の種類の  注文番号"以外"を削除し、B列の日付の昇順に、  残った注番を並べ替えたいです。 お手数ですが、ご指導よろしくお願いいたします。

  • Excel VBAのプロシージャについて

    こんにちは、VBAを作成しているのですが、分からない所があるので、詳しい方からのご教授をお願いします。 A                                 AF  _______________________________________________________________________  1|        1   2    3   4   5    ・・・  31   ←日付  2|  鈴木  11   15   35   8 25  3|  斉藤   45   52   25   21   50  4|  伊藤   25   45 75   36 16   ・1行目のB1セルからAFセルまで日付が入っています。 ・2行目のA2セルからA4セルまで名前が入っており、横方向にランダムな数字が入っています。 上記の表から、日付とランダムな数字を指定し検索する事でmsgboxで氏名を返せるように作っています。(例えば3日25で検索すると、msgboxで斉藤とでるようにする)。 自分なりに作ってみたのは、まずvbaを実行すると、A1行をautofilterで日付を検索し、activecell(検索結果の日付セル)の列からランダムな数字を再度autofilterで検索するというものですが、もっと記述について他に方法があるのではないかと疑問に思っていますので、このようなプログラムを作成する場合、慣れた方ならどのように記述するのでしょうか?よろしければ教えていただければと思いますのでよろしくお願いします。 ※実際は検索boxを作成していますが、AHセルに検索したい日付、AIセルに検索したいランダムな数字を入力するものとさせて頂きます。 ※EXCEL2000を使用しています。 ※中傷するような回答は遠慮させていただきます。 よろしくお願いします。

  • エクセルで休日日数・連休日数を表示するにはどうしたら良いですか?

    休日日数(連休日数)を表示させたいです。 A列には日付がカレンダー通りに並びます。 (日付が飛ぶ・前後するという事はありません) B列にはA列に並んだ日付に対応して土日祝日を判定し、該当する場合1が表示されます。 そこで、C列にB列の小計を出したいのですが、どうしたら良いでしょうか? (例 単独の休日なら1、土日なら2、土日を含む3連休なら3) 但し、表示箇所は小計するセルの2行上(2日前)のセルとしたいです。 よろしくお願いします。

専門家に質問してみよう