• ベストアンサー

エクセル 月の第○週が何日までか

セルA1に「2013」 セルB1に「12」 と入力されています。 セルC1に2013年12月の第1週目の最後の日付を表示するにはどうしたらいいのでしょうか? 上記の例では、表示は「7」です。 同様に、セルD1、E1、F1にそれぞれ2週目の最後の日付、3週目の・・・という風に表示させたいです。 G1セルには31と表示させたいです。

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

  • ベストアンサー
回答No.3

No.1 です。すみません、うっかり第 6 週を忘れてしまいました。 先ほどの数式では、第 5 週が「0」かつ第 6 週が「28」という結果になり得てしまうので、次式に差替えをお願いいたします。「(b1<>0)*」を挿入しただけです。 C1 =(b1<>0)*(b1<>day(date($A1,$B1+1,0)))*min(8-weekday(date($A1,$B1,1))+7*(columns($C1:c1)-1),day(date($A1,$B1+1,0))) C1 をコピーし C1:H3 に貼り付け。ゼロを非表示にする方法は、No.1 を読んでください。

tatataas
質問者

お礼

回答ありがとうございます!!出来ました!!(こぴぺしただけですが・・・) 会社の勤務管理表を作っていて、今回の質問が出来る必要がありました。 この式にたどり着けるまで、自力だと5時間くらいみっちり考えないと 出てこなそうです(笑) まだ理解できてませんが、おいおい考えます。 ありがとうございます。

その他の回答 (5)

回答No.6

No.3 です。 ゼロを消す書式記号を「0;0;」と書きましたが、どちらかといえば「0;-0;」などとしないと、符号がなくなってしまいますね。 けれど今回、そもそも負数になることはあり得ないので、「0;;」だけで十分でした。 本題に関係ないことを含めてつまらないケアレスミスを連発してしまい、申し訳ありませんでした。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

>G1セルには31と表示させたいです。 との事ですが、月によっては第5土曜日が存在する月もありますから、月末の日付はH1セルに表示させる様にした方が良いと思います。  まず、C1セルに次の様な関数を入力して下さい。 =IF(ISNUMBER(($A1&"/"&$B1&"/"&7*COLUMNS($C:C)-WEEKDAY(DATE($A1,$B1,1))+1)+0),DATE($A1,$B1,7*COLUMNS($C:C)-WEEKDAY(DATE($A1,$B1,1))+1),"")  次に、H1セルに次の様な関数を入力して下さい。 =IF(ISNUMBER(($A1&"/"&$B1&"/1")+0),DAY(DATE($A1,$B1+1,)),"")  そして、C1セルをコピーして、D1~G1の範囲に貼り付けて下さい。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

通常で考えれば、7,14,21,28と固定の数字となり 最後にうるう年でない2月以外で29,30,31のいづれかだと思うのですが。。。 G1セルだけでいいなら =IF(AND(MOD(A1,4)>0,B1=2),"",DAY(DATE(A1,B1+1,0)))

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >2013年12月の第1週目の最後の日付 とは毎週土曜日の日付、 >G1セルには31 すなわち、G1セルにはその月の月末の日付! という解釈でよろしいのでしょうか? もしそうであれば月によっては6週ある月がある場合がありますので、 H1セルまで表示させる場合もあると思います。 一例です。 どこか使っていないセルに =EOMONTH(DATE(A1,B1,1),-1)-WEEKDAY(EOMONTH(DATE(A1,B1,1),-1)-5,3) という数式を入れておきます。 これでA1セル年のB1セル月の前月の最終土曜日のシリアル値が表示されます。 これを利用すれば、後は単純に「7」ずつプラスしていけば毎週土曜日のシリアル値が表示されます。 仮に上記数式をK1セルに入れた場合は C1セル(セルの表示形式はユーザー定義から d としておきます)に =IF(MONTH($K1+7*COLUMN(A1))=$B1,$K1+7*COLUMN(A1),IF(B1=EOMONTH($K1,1),"",EOMONTH($K1,1))) という数式を入れH1セルまでオートフィルでコピーしてみてください。 ※ 解釈が間違っていたらごめんなさいね。m(_ _)m

tatataas
質問者

お礼

回答ありがとうございます。 その解釈であってます。 なるほど。こういう考え方もあるのですね。 いろいろ変えて実験してみます!

回答No.1

週が日曜日から始まり土曜日で終わるカレンダーを想定し、7 日未満となる場合も第 1 週として認めるなら、次式。 C1 =(b1<>day(date($A1,$B1+1,0)))*min(8-weekday(date($A1,$B1,1))+7*(columns($C1:c1)-1),day(date($A1,$B1+1,0))) C1 セルをコピーし C1:G2 のセル範囲に貼り付け。添付図のように、第 4 週の土曜日が 2 月 28 日で第 5 週が存在しない場合に算出されるゼロを非表示にするため、セルの書式を「0;0;」などに設定。

関連するQ&A

  • エクセル2003 週5のカレンダー

    週5のカレンダーを関数かマクロで作れないでしょうか? 質問で、同じ質問を探してみたんですが、見当たりません。 イメージとしては、 A1に西暦で「年」 B1に「月」 を入力すると、自動に日付を表示させたいのです。 因みに、A2、B2、C2、D2、E2、F2、G2は「曜日」を 固定で入力しておきます。 ほとんどのカレンダーは、 週6で作られていますが、 私が作りたいのは、週5です。 以下のイメージは、 実際のカレンダーとは違いますが、 例えると、30日と31日が6週目になる月は、 1週目の頭に持っていきたいんです。 ※表示上「_(アンダバーを入れてあります)」 _____(A)__(B)__(C)__(D)__(E)__(F)__(G) (1)_2010__3 (2)__日___月_____火____水____木____金___土 (3)__30___31_________________________________1 (4)___2____3_______4_____5______6_____7_____8 (5)___9___10______11___12_____13___14___15 (6)__16__17______18___19_____20___21___22 (7)__23__24______25___26_____27___28___29 他の質問を見て、試してみたんですが、 上手く行きませんでした。 さらに、土・日・祭日のセルの色を 自動に背景色が自動に黄色にできるといいのですが・・・。 アドバイスがありましたら、 よろしくお願い致します。

  • EXCELで第○週から何日から何日を求めたい

    EXCEL2010を使用しております。 セルA1に2019/5/1、セルB1に1と入力して、セルC1にその週の水曜日、セルE1には次の週の火曜日を表示させたいのですが、セルC1とセルE1に入力する関数をお教えいただけませんか? 添付した表にはセルA1には2019年5月となっています。セルB1にも第1週とありますが、それぞれセルの書式設定にて変更したものです。 実際に入力したものはセルA2、B2にあります。 よろしくお願いいたします。

  • Excelの時間計算(年・月・日 別々のセルで…)

    Excelの時間計算で悩んでいます。 2つの異なる日付(年、月、日別々のセルに入力したもの)の 日数の差を関数で表示させたいのですがうまく行きません。 例えば、 A列にスタート年、B列にスタート月、C列にスタート日、D列にエンド年、E列にエンド月、F列にエンド日を入力し G列にエンド年月日-スタート年月日の日数させたいと考えています。 +----A----B----C----D----E----F----G 1   2008      2      1   2008      2     28     24 G1にDATE(D1,E1,F1)-DATE(A1,B1,C1)の数値を表示させたいのです。 ひとつのセルに日付形式で年月日を持たせれば DATEIF関数で実現可能なのは判りましたが 運用上、年月日を別のセルにして管理したいと考えています。 どなたかお解りになる方、いらっしゃいませんでしょうか。

  • エクセルで一致しないものを抜き出す方法

     またエクセル関数の質問があります。 セルA1:A6にA~Fがランダムに入力されています。 セルB1:B6にA~Fの一部がランダムに入力されています。空白もあります。 別なセルに一致しない記号を表示させたいのですが.... 例   A B C D 1 F C B 2 D   D 3 B A 4 A F 5 E 6 C E 別なセル(上記ではC1、C2)に表示させられますか? A列とB列の記号は変化します。  よろしくお願いします。

  • エクセルで、2つの条件に一致する値を返す方法 教えてください

    A B C D E F 1 日付 分数 2 Aさん Bさん Cさん Aさん Bさん Cさん 3 3/2 2/12 3/15 9 10 10 4 3/4 2/12 3/15 2 3 3 5 3/4 2/12 3/15 30 30 30 6 3/3 2/12 3/15 1 1 2 7 3/4 2/12 3/15 3 5 4 8 3/4 2/12 3/15 29 29 29 上記の表より 列A,B,Cは日付 列D,E,Fは分数です ・3行目のG列にD3:F3の範囲で最小値であり、A3:C3の範囲で最新の日付(最大値)である時の 日付を表示したい。 G3のセルを下に引っ張り各行ごとに値を表示したいです。 関数(式)を教えてください。

  • エクセルでIFとANDを使った関数について教えて下さい

    A B C D E F G 1 1 2 3 結果 2/3 2/4 2/5 2 2/3 2/4 2/5 合格 0 0 1 3 上記のような表を作成しようとしています。条件が、 D1が「合格」で、 C2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じなら「1」、 違うなら「0」、 B2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」なら「1」、違うなら「0」、 A2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」で、B2が「空欄」なら「1」、違うなら「0」 を返しなさい。 という関数を作りたいのですが、上手くいきません。 IFとANDを使えばいいと思うのですが、どのように組み合わせれば 良いでしょうか。 真を返す、優先順位は、C2、B2、A2、のセルです。 C2に日付が入ってるときはB2とA2に日付が入っていても カウントされないように(偽が入るように)したいのです。 ちなみに、最初は、 =IF($D2="合格",IF($C2=E$1,1,IF($B2=E$1,1,IF($A2=E$1,1,0))),0) と、入れてましたが、これだと、C2に日付が入った時にC2だけカウント したいのに、B2もA2もカウントされてしまいます。 どうか、良きアドバイスをお願いします!!

  • EXCEL2007 情報抽出 関数

    A~E列それぞれの一つのセルに"1"を入力し、F列にある情報を抽出、 G列のセルに表示させたいです。 行が多いので、IF関数などは使用できませんでした・・・ 何を使用すればよろしいでしょうか・・・? 例) A1~A20 B1~B20 C1~C20 D1~D20 E1~E20 それぞれの列の一つだけに1を入力します。 ・A 5に1を入力 → F5の情報をG1に表示 ・B15に1を入力 → F15の情報をG2に表示 ・C 2に1を入力 → F2の情報をG3に表示 ・D18に1を入力 → F18の情報をG4に表示 ・E9 に1を入力 → F9の情報をG5に表示 行数が多く、複数の関数を試してみても、数の制限にひっかかるのか うまくいかず困っています。どうぞよろしくお願いします。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • エクセルにて使用時間を出したい!!

    いつも、お世話になっております。 電気関係の仕事上、必要になってきたのでご教授ください。 蛍光灯の総点灯時間を知りたいのです。 たとえば2005/11/1に蛍光灯を取り替えました。 2006/11/1現在の点灯時間は? 条件として A1セルに取替えた日付2005/11/1 B1セルに現在の日付自動記入 C1セルに1日の平均点灯時間8時間を手入力 D1セルに総点灯時間(B1-A1)*C1で良いのでしょうか?  使用日数*使用時間 E1セルにメーカ推奨の点灯時間8000時間を入力 F1セルに取替え時間オーバ(E1-D1)かな? G1セルにF1の結果より時間オーバの場合は「取替要」を表示 私が、知りたいのはB1とD1とG1の関数式が知りたいです。 お願いします。

  • エクセルの演算式で困っています。

    エクセルの演算式で困っています。 セルC1,D1,E1,F1、G1の5個のセルに人数をそれぞれ入力します、そして、5個のセルの総計をH1のセルに入力します(G1の数値は、必然的にH1-(C1+D1+E1+F1) になると思います。 A3、A4,A5 と3個のセルに金額を入力します。 で、C3のセルに、(A3×C1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。つまり、C3のセルにこの演算結果が表示されるような演算を仕込みたいのです。 以下、同様に、C4のセルに、、(A4×C1÷H1)+(A4×1×5)の演算結果を表示したいのです。 また、D3のセルには、(A3×D1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。 以下、同様に、E3のセルには、、(A3×E1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。 こうなると、最後のG3のセルには、H1-(C1+D1+E1+F1) を演算式の一部に書かないといけなくなります。 で、私には手におえなくなったのです。 すいません、もし、これをご理解頂けたら、アドバイスを御願いできないでしょうか?

専門家に質問してみよう