• ベストアンサー

エクセルにて「週」から日付を逆引きしたい

WEEKNUM関数などで、ある日付からその日が第何週にあたるか算出する方法はわかったのですが、 その逆に対象の「週」からその週に当てはまる日付を算出したいと思っています。 A1に40(週)と入れるとB1~H1に9/26~10/1の日付が表示されるような形を考えています。 今は別シートにテーブルをあらかじめ作っておいてVLOOKUPで週をキーにして見に行くようにしていますが、 テーブルを作るのも大変ですし、もうすこしスマートな方法はありませんでしょうか?

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

  • ベストアンサー
  • zenjee
  • ベストアンサー率47% (50/106)
回答No.3

カレンダーでは通常一番左の列が日曜となっているので、それを前提にお答えします。 まず、表の配列ですがA列を第何週かを入力する列とします。 見出し行としてB1~H1に曜日(日・月・火・水・木・金・土)を入力します。 第何週になるかは年によって異なるので、まず2005年の式から始めます。 B2に次の式を入力します。 =IF($A2="","",DATE(2005,1,1)+7*($A2-1)-6) C2に =IF($A2="","",B2+1) と入力し、右方向にH2までコピーします。これで2005年は完了です。 次に2006年です。まずB3に =IF($A3="","",DATE(2006,1,1)+7*($A3-1)) と入力します。 次にC3に =IF($A3="","",B3+1) と入力し、その式を右にH3までコピーします。 以上で完了です。年別に2行目は2005年分、3行目は2006年分ですからA列に数値を入力して試して見てください。 2007年になるとB列の式が次のように変わります。 =IF($A63="","",DATE(2007,1,1)+7*($A63-1)-1) C列からH列までの式は毎年不変です。 このように今年の第○週は何月何日になるかというのは、その年の元日を起点とする以上、毎年少しずつ変わらざるを得ないでしょう。

lapinIII
質問者

お礼

ご回答ありがとうございました。 わかりやすい手順まで書いていただき助かります。 日曜日から始まるスタイルを普段使用していますのでとても見やすいです。 やはり起点の元旦の曜日を考慮した式を使ったほうがずれないですし確実ですね。 こちらを応用させていただきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

考え方 シリアル値ということを常に念頭におきます。 2005年の例とします。 第40週を例にします。 年末日のシリアル値  =DATEVALUE("2005/1/1")-1 年初日の曜日 ↑ 第1週 普通は7日に対し、端数日数 ↓| 初めの月曜日(または日曜日)月曜日を週の開始日にとる方式にします。 ↑ 第2週 | 以下 7日(月曜日から日曜日まで)ごとの繰り返し | | ・・・7*(40-1-1)日 ー1は年初の半端、-1は40の前週                のためにー1 。38週分  | | ↓ 第39週の終わり日 第40週の始まり日 ↑ 7日(または6日分=質問の例) 式にすると =DATEVALUE("2005/1/1")-1+((40-2)*7)+8-WEEKDAY("2005/1/1",2)+ROW() をA1に入れてA2以下に6(ないし7)行複写。 (結果) 2005/9/26 2005/9/27 2005/9/28 2005/9/29 2005/9/30 2005/10/1 40のところをセルの値にすれば、変えると任意の第X週が計算できる。

lapinIII
質問者

お礼

ご回答ありがとうございました。 No1の方と同じようにコチラの式も (このまま使用すると)2006年の第一週がずれてしまうようです。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

年の開始日(1月1日)の曜日で計算できます。 B1=DATE(YEAR(TODAY()),1,(A1-1)*7+1-WEEKDAY(DATE(YEAR(TODAY()),1,1),3)) C1=B1+1 D1=C1+1 .. H1=G1+1

lapinIII
質問者

お礼

早い回答ありがとうございました。 YEAR関数をセル指定にすれば他の年にも使用できますね。 ただ、2006年の第1週がずれてしまうようです。 シンプルでとてもわかりやすいのでいろいろ応用できるとおもいます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日付がその週の第何週目に当たるかを調べる

    すみません。教えてください。 エクセル VBAで、日付がその週の第何週目に当たるかを調べるを調べることはできないでしょうか?  WEEKNUM関数で、 日付がその年の第何週目に当たるかを調べることはできますが、 その週を調べる場合は、どのようにしたら、調べられるでしょうか? よろしくお願い致します。

  • 日付表現にしたい

    IF関数で、ある数字より下ならば"-"を、それ以外は" "を、 それ以外だったとき更にVLOOKUP関数を使って、日付を別のシートからひっぱっるようにしたいのですが・・・。 VLOOKUP関数で日付をひっぱってこれたのですが、シリアル値の形になってしまって日付の表現になりません。 7/23というように表現するにはどうしたらよいでしょうか? ちなみにセルの書式設定は7/23と表現されるようにしてあります。 わかりにくい表現で申し訳ないですが、よろしくお願いします。

  • エクセル関数で同じ日付の合計を出す関数を作りたいです。

    エクセル関数で同じ日付の合計を出す関数を作りたいです。 以下のような表があります。 <Sheet1>      A      B 1  2010.08.21  4500 2  2010.08.15  300 3  2010.08.15  -600 4  2010.08.15  -1100 これを使用して、 <Sheet2>      A      B 1  2010.08.29   0 2  2010.08.21   4500 3  2010.08.15   -1400 という具合に、B1~B3に、Sheet1の合計を表示させたいです。 もちろん、簡単でよいなら、それぞれsheet1を見て、手打ちで該当するものに たとえば、Sheet2のB3なら、=sum(Sheet1!b2:b4)ですむと思うですが、 転写させて、毎回自動的に結果を得られるようにしたいのです。 具体的には、 Sheet2のA列の日付をキーにして、 Sheet1のA列とマッチしたもののBの合計を求めたいです。 (説明べたでごめんなさい) Vlookupやmatch関数などで試してみたんですが、 いまいちうまくいきませんでした。 エクセルに詳しい方、回答お待ちしております。

  • Excelで、同じ年の特定日の日付を指定する方法

    Excelで、あるセルの日付と同じ年の特定の日(例えば5月末日)が、その年の第何週めにあるかを計算させたいと思います。 あるセルの日付→年を返す という関数は、=YEAR()を使えばいいのですが、「同じ年の5月31日」を返す方法がわかりません。 日付→何週めか は、WEEKNUMで計算できるとわかりました。 よろしくお願いします。

  • Excelで「日付・時刻」の複数条件のデータを抽出するには?

    Sheet1に以下のような表があります。 日付__開始__終 了__行き先  7/1__09:00__11:00__江別 7/1__13:00__14:00__岩見沢 7/1__16:00__18:00__旭川 7/2__09:00__12:00__小樽 7/2__13:30__16:00__余市 さて、ここでSheet2のA1に「7/1」と入力すると、 A2からA5に「09:00_18:00_江別_旭川」と出力されます。 また、Sheet2のB1に「7/2」と入力すると、 B2からB5に「09:00_1600_小樽_余市」というように 出力させるようにしたいのです。 つまり、日付別に「最初の開始時刻」と「最後の終了時刻」について それぞれの行き先を求めたいのです。 1日あたりの行き先の件数は2件の日も7件の日もあり、特に 決まっていません。 以上のような出力をするには、どうすれば良いでしょうか? 複数の条件(日付・時刻)を満たす時の結果を抽出する方法が分かりません。 できれば、ピボットテーブルのような難しい操作をせずに求めたいです。 vlookup関数・small関数・large関数あたりが関係ありそうな気がしますが、 アドバイスをよろしくお願いいたします。

  • 日付の加算

    日付Aと日付Bとの差を算出する方法についてはDateDifというのがあるそうですが、 逆に日付AからX年Y月Z日後の日付を算出する関数またはカンタンな処理式があれば教えて下さい。 なお、Excelは97を使用しています。

  • 2つの日付の中間の日付 エクセル 関数

    日付Aと日付Bの中間の日付を算出する関数を教えてください。 例:2013/01/01、2013/12/31の中間=2013/07/02 一度にたくさん計算できるようにエクセルに関数を組んでやりたいです。 よろしくお願いいたします。

  • エクセルの日付関数について

    エクセルの日付関数についてです 基準日から計算して、日付を求めていますが、その求めた「月」だけを使用し別なシートで VLOOKUPを使うときの検索値にしたいのです。 その月を数値化する方法はありませんでしょうか うまく説明できませんがよろしくお願いします  今日の日付 →条件による該当日付 →該当日付の「月」を利用し検索する  2010.11.12    2011.2.11          2月を数字の2と置き換える方法                            がありませんか?

  • エクセルの日付表示について

    エクセルの日付を1桁ずつ別のセルに表示したいのですが、 何か方法があるでしょうか? たとえばH20.7.25の場合、 1つのセルに1桁ずつ シートに↓のように表示したいのですが。  |  A  |  B  |  C  |  D  |  E  |  F  | 1|H20.7.25| 2|  2  |  0  |  0  |  7  |  2  |   5  | A1の日付を2列目に1桁ずつ表示。 (わかりづらいかもしれませんが・・) よろしくお願いします。

  • Excelで日付を自動表示させたい

    Excelのシートで2行目に1日から末日までの日付が入っています。 他のファイルでは1行目に入力されている年と1月を参照して、Date関数を使って29日以降の日付は自動で表示されるようになっています。 ところが今使っているファイルでは1行目にタイトルが入っていて、年月は別のシートに次のように入力されています。 【○○店売上2008.11】 mid関数を使って数式を作ってみたのですが、29日以降の数字は表示されません。真っ白のままです。 どのようにしたら別シートの年月を参照する形で日付を自動表示させられるのでしょうか?できればタイトルが変えられないのでmid関数でなくても何らかの方法で取り出したいです。 どうかよろしくお願いします。

専門家に質問してみよう