エクセルで日付同日連続

このQ&Aのポイント
  • エクセルで日付同日連続する方法について質問です。B列4行目以降に月の初めを入力すると、同日が連続するようにしたいです。
  • 具体的には、日付は月の初めから月末まで連続させたり、週の初めから1週間分を連続させたりしたいです。
  • どのような条件を設定すれば、B列4行目以降の日付を連続させることができるでしょうか?エクセル2000を使用しています。
回答を見る
  • ベストアンサー

エクセルで日付同日連続

B列4行目以降 (同日が2行連続した日付)に、例えば月の初めを入力すると 下記のように同日が連続(ここでは2行分)させる方法はどのようにしたら よろしいでしょうか? 1,日付は月の初めから月末まで。 2,日付は週の初め(月曜日)から1週間分(次週の月曜日)。 3,2,の日付は不特定日(但し、月曜日から)です。  等々といろいろ条件が出来てしまいますが、 ここでは1,から3,を行いたいです。 B列4行目以降の日付 H23年9月1日(木) H23年9月1日(木)・・・・上行と同日 H23年9月2日(金) H23年9月2日(金) H23年9月3日(土) H23年9月3日(土) H23年9月4日(日) H23年9月4日(日) H23年9月5日(月) H23年9月5日(月) H23年9月6日(火) H23年9月6日(火) H23年9月7日(水) H23年9月8日(木) H23年9月8日(木)    ・    ・    ・ エクセル2000です。 3行分など自由行にしたい場合は、改めて質問させていただく方がよろしいいでしょうか? 初心者ですがよろしくお願いします。

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

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

 回答番号ANo.9,11です。 >n行おきにセルに色をつけるやりかたの=MOD(ROWS(A$2:A2)-1,行数×2)<行数とは又違う意味でしょうか?  MOD関数とROWS関数を利用して、周期性を持たせている、という意味においては、一部に同じ原理を利用してはおりますが、全体としては違うものです。 =MOD(ROWS(A$2:A2)-1,行数×2)<行数 は、「先頭の行から数えた行数」を「周期の2倍の数」で割った余りが、「周期の数」以下である場合には色を付け、「周期の数」を超えている場合には色を付けないというものです。  つまり、n行ごとに色を着けたり、着けなかったりを繰り返したい場合において、nの2倍の数の周期性を持たせた上で、1周期の中の前半部分では色を着け、後半部分では色を着けない、という事を行っています。  因みに、私だったら =MOD(ROWS($2:2),n*2)<=n とします。  又、1行目~n行目の範囲は色を着けずに、(n+1)行目~2n行目には色を着ける、という繰り返しを行う場合には、 =MOD(ROWS($2:2),n*2)>n となります。  これに対して、ANo.11で示したB5セルの数式中の B4+(MOD(ROWS($5:5),2)=0) という部分に関してですが、Excelでは、判定式が成り立っている場合には、その判定式が記されている箇所を数値の1と見做して計算し、判定式が成り立っていない場合には、その判定式が記されている箇所を数値の0と見做して計算します。  $5:5の範囲に含まれている行の数は1行ですから、 ROWS($5:5) の計算結果は1となります。  MOD関数は MOD(数値, 除数) の形式で記入する関数で、数値を序数で割った際の余りを求める関数です。  数値の部分に入力されているROWS($5:5)の部分の計算結果が1で、除数には2が入力されていますから、 MOD(ROWS($5:5),2) の計算結果は、1を2で割った時の余りである1となります。  そして、1は0と等しい値ではありませんから、 1=0 という判定は、成り立っていないという事になりますので、 MOD(ROWS($5:5),2)=0 もまた、成り立ってはいない事となりますから、 (MOD(ROWS($5:5),2)=0) の部分は、計算においては数値の0として扱われます。  つまり、 B4+(MOD(ROWS($5:5),2)=0) = B4+(MOD(1,2)=0) = B4+(1=0) = B4+0 = B4 という事で、B5セルには、B4の値に0を加えた値が表示されます。  そして、B5セルをコピーして、B6セルに貼り付けますと、関数はExcelの機能によって、自動的にB6セルに合わせた形に修正されますから、B5セルにおいては B4+(MOD(ROWS($5:5),2)=0) となっていた箇所は、B6セルに貼り付けますと、 =B5+(MOD(ROWS($5:6),2)=0) へと、自動的に書き換えられます。 B5+(MOD(ROWS($5:6),2)=0) = B5+(MOD(2,2)=0) = B5+(0=0) = B5+1 なのですから、B6セルの関数は、B5セルの値に1を加えた数が表示されます。  つまり、この関数は、「5行目から数えた行数」が周期の倍数と等しくなった場合にのみ、「1つ上のセルに入力されている日付」に1日を加算した日付を表示し、それ以外の場合には「1つ上のセルに入力されている日付」と同じ日付を表示させる関数となっています。

hirota3310
質問者

お礼

お礼が大変遅くなりました。 補足質問に対して、ご丁寧に説明頂きありがとうございます。 一度には理解できませんが、勉強の参考になります。 No.14さんの場を借りて申し訳ありませんが 今回、ご回答頂いた内容はそれぞれの場で使用(適用)させて頂きます。 ありがとうございました。 ベストアンサーは最後までお付き合いいただきました、回答番号ANo.9,11、14さんにさせて頂きます。

その他の回答 (13)

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

No.5です。 >行数を変更したければ >=IF(OR(B4="",MONTH($B$4+INT(ROW(A1)/2))<>・・・ >IF(OR($C$4="",$B$4=""),"",$C$4+INT(ROW(A1)/2)) >の除数2を3(n行)に変更すればよろしいでしょうか? とありましたので、再び顔を出しました。 結論としてはその通りです! 余計なお世話かもしれませんがわざわざ数式を変更せずに↓の画像のようにA1セルに表示させたい行数を入力すると表示されるようにしてみました。 方法は前回同様ですが、数式が当然かわります。 B4・C3セルは手入力になります。 A4セルは =IF(B4="","",TEXT(B4,"aaa")) としてとりあえずA5セルまでオートフィルでコピーしておきます。 C4セルは =IF(OR(A1="",C3=""),"",INDEX(B:B,MATCH(C3,A:A,0))) B5セルに =IF(OR($A$1="",$B$4=""),"",IF(MONTH($B$4+INT(ROW(A1)/$A$1))=MONTH($B$4),$B$4+INT(ROW(A1)/$A$1),"")) C5セルに =IF(OR($C$4="",7*$A$1-1<ROW(A1)),"",$C$4+INT(ROW(A1)/$A$1)) として、A5~C5セルを範囲指定 → C5セルのフィルハンドルでまとめて下へずぃ~~~!っとコピー! これでもかっ!というくらいコピーしておきます。 これでA1セルの数値を変えるだけで好みの行数分だけ同じ日付が表示されるはずです。 以上、長々と失礼しました。m(_ _)m

hirota3310
質問者

お礼

補足質問回答ありがとうございます。 >余計なお世話かもしれませんが・・・・ 全然そのような気持ちはありません。 画像添付していただき、ご丁寧にありがとうございます。

noname#204879
noname#204879
回答No.12

[No.10補足]へのコメント、 》 のROW()>19の「19」はどのような意味を持つのでしょうか? 指定の月曜日から次週の同曜日までを4行目から表示始めると「19」行目で終る次第。 「19」行目を超える場合は空白表示にするための条件として「ROW()>19」を使用しています。 5行目から始めるなら「19」は「20」に変更すればOK。

hirota3310
質問者

お礼

補足質問回答ありがとうございます。 >指定の月曜日から次週の同曜日までを4行目から表示始めると「19」行目で終る次第。 「19」行目を超える場合は空白表示にするための条件として「ROW()>19」を使用しています。  5行目から始めるなら「19」は「20」に変更すればOK。 ・・・・・理解できました。 アドバイスいただいたやり方、結構便利だなあ~と思いました。 ありがとうございます。

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

>アドバイスいただいた式を入力しましたが「0」を返しM33年1月0日(土)を表示します。  申し訳御座いません、当方の入力ミスで、B4セルを指定すべき箇所がB5になっておりました。(動作確認済みの関数をコピー&ペーストした筈なのですが、何故この様なずれが生じたのかは判りません) 【誤】 =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*2),B5+(MOD(ROWS($5:5),2)=0),"") =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*3),B5+(MOD(ROWS($5:5),3)=0),"") =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*n),B5+(MOD(ROWS($5:5),n)=0),"") 【正】 =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*2),B4+(MOD(ROWS($5:5),2)=0),"") =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*3),B4+(MOD(ROWS($5:5),3)=0),"") =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*n),B4+(MOD(ROWS($5:5),n)=0),"")

hirota3310
質問者

補足

補足質問回答ありがとうございます。 セル指定間違いだったのですか・・・私にはまったく分かりませんでした。 再び補足質問にさせて頂きます。 アドバイスいただいた式の =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*n),B4+(MOD(ROWS($5:5),n)=0),"") ・・・・+(MOD(ROWS($5:5),n)=0),"")の中の MOD(ROWS($5・・・は ネットで調べましたが n行おきにセルに色をつけるやりかたの =MOD(ROWS(A$2:A2)-1,行数×2)<行数とは又違う意味でしょうか? 当初の質問から外れているかもしれませんが よろしければお願いします。

noname#204879
noname#204879
回答No.10

添付図参照 A4: =IF(MONTH(DATE(A$1,A$2,ROW(A2)/2))<>A$2,"",DATE(A$1,A$2,ROW(A2)/2)) D4: =IF(ROW()>19,"",DATE(D$1,D$2,D$3*7-WEEKDAY(DATE(D$1,D$2,0),3)+(ROW(D1)-1)/2)) 1行目、2行目は、それぞれ西暦年、月 を入力 D列の3行目は「第3月曜」の「3」の意味です。

hirota3310
質問者

補足

早々にご回答ありがとうございます。 ご丁寧に画像までつけていただきありがとうございます。 画像をみたら、少々お時間かけていただいた感じに受け取れ、 ここまでして頂き、ありがとうございます。 早速、アドバイスいただいた式を入力いたしました。 バッチリです。感動です! 西暦、月、月曜日の何週目か、とても分かりやすいです。 素人につき関数の意味は分かりませんが、 =IF(ROW()>19,"",DATE(D$1,D$2,D$3*・・・・ のROW()>19の「19」はどのような意味を持つのでしょうか? よろしければアドバイスお願いします。

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

 B5セルに次の数式を入力してから、B5セルをコピーして、B6以下に貼り付けると良いと思います。 =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*2),B5+(MOD(ROWS($5:5),2)=0),"")  因みに、同じ日付が並ぶ行数が3行の場合には、次の様な関数となります。 =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*3),B5+(MOD(ROWS($5:5),3)=0),"")  つまり、同じ日付が並ぶ行数がn行の場合には、次の様な関数となります。 =IF(AND(ISNUMBER(B$4),ROWS($5:5)<8*n),B5+(MOD(ROWS($5:5),n)=0),"")

hirota3310
質問者

補足

早々にご回答ありがとうございます。 アドバイスいただいた式を入力しましたが 「0」を返しM33年1月0日(土)を表示します。 アドバイスいただいた式の入力方法でどこかを間違えていますでしょうか? よろしければアドバイスお願いします。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.8

あれ?何で8にしたんだろう。 何度もすみません。 =IF(ROW()>7*$C$2+3,"",$B$4+INT(ROW(A1)/$C$2)) C2セルにn日おきの数値を入れるセルをつくりました。2とか3とか入力するとその数だけ同じ日付がつづいた1週間分の日付がでます。 前半式の+3はB1からB3までのセル数です。 それから、曜日入りの日付は表示形式でできるのはもちろんご存知と言うことでいいんですよね。

hirota3310
質問者

補足

ご親切に n日を入力出来るようにして頂きありがとうございます。 すごく便利です! No.6でアドバイスいただいた式を =IF($D$4="","入力待ち",$D$4+INT(ROW(A1)/$C$2))に変更してみました。 エラー回避方法はネットで調べましたがこれでよいでしょうか? D4セルが未入力の場合は、「入力待ち」表示にしたいです。 今回、アドバイスいただいた式のエラー回避方法(未入力時)は??です。 質問からはずれているかもしれませんが よろしければアドバイスお願いします。 又、式の意味もよければお願いします。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.7

あ、1週間分でしたね。 では、 B5に =IF(ROW()>8*3+2,"",$B$4+INT(ROW(A23)/3)) 3日ずつの式です。 これで下の方にコピーしても1週間分の日付だけが出るはずです。 8*3の後ろの3がn日ずつの数になりますので2日ずつなら8*2としてください。 やはり、n日ずつの数を入れるセルを作った方がやりやすいかもしれませんね。

hirota3310
質問者

補足

No.8での補足質問で1週間用の式のエラー回避は =IF(B4="","入力待ち",IF(ROW()>7*$C$2+3,"",$B$4+INT(ROW(A1)/$C$2))) でよろしいでしょうか? またいでの補足質問をしていますが よろしければアドバイスお願いします。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.6

B4に最初の日付を入力 B5に =$B$4+INT(ROW(A1)/2) と入力して、下に必要なだけコピー ※ROW(A1)は数式を入れる場所に関係なくそのまま入力してください。 これで同じ日付が2つずつできます。 3つずつにしたい場合は ROW(A1)/2のスラッシュの後ろを3にして =$B$4+INT(ROW(A1)/3) とします。そして下にコピー。 どこかに○行おきみたいな入力セルを作っておいてそこを参照してもいいかも知れません。 そうすればいちいちコピーしなおさなくていいですから。 多分、こういうことが言いたかったのではないかと思いますが如何でしょう?

hirota3310
質問者

お礼

早々にご回答ありがとうございます。 思っていた通りに出来ました。 ありがとうございます。

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

こんにちは! 一例です。 ↓の画像のようのA列を作業用の列として使用しています。 (実際は遠く離れた列にするか、列を非表示にした方がよいかもしれません。) B4セルとC3セルだけは手入力とします。 B5セルに =IF(OR(B4="",MONTH($B$4+INT(ROW(A1)/2))<>MONTH($B$4)),"",$B$4+INT(ROW(A1)/2)) という数式を入れオートフィルでずぃ~~~!っと下まで(65行目まで)コピー! A4セルは =IF(B4="","",TEXT(B4,"aaa")) としてこれもオートフィルで下へコピー! C4セルに =IF(OR(C3="",$B$4=""),"",INDEX(B4:B65,MATCH(C3,A4:A65,0))) C5セルは =IF(OR($C$4="",$B$4=""),"",$C$4+INT(ROW(A1)/2)) として7日分(17行目)までオートフィルでコピー! これで画像のような感じになります。 以上、参考になれば良いのですが・・・m(_ _)m

hirota3310
質問者

補足

早々にご回答ありがとうございます。 親切に画像までつけていただきありがとうございます。 アドバイスいただいた式を入力しましたら うまくできました。 行数を変更したければ =IF(OR(B4="",MONTH($B$4+INT(ROW(A1)/2))<>・・・ IF(OR($C$4="",$B$4=""),"",$C$4+INT(ROW(A1)/2)) の除数2を3(n行)に変更すればよろしいでしょうか? 大変参考になりました。

  • chiizu2
  • ベストアンサー率41% (164/400)
回答No.4

補足です 3行分というのであれば B6にも=B4 B7に=B4+1として B5~B6の3行分をスマートフィルでコピーすれば良いのですが 上行と同日を自由に設定したいというのであれば B5に=B4+1と入力してやり下にコピーして 同日にしたい行だけ手作業で 式の中の+1を消してやる方が簡単かと思います

関連するQ&A

  • Excelで1ヶ月分の日付列を設定する方法

    Excelで1ヶ月分の日付列を設定する方法を教えてください。 自分のオフィスでは、毎日の仕事時間を記録する表をExcelで作っています。社員が個人個人で時間を書き込み、1ヶ月分で一枚の表になります。 この表には "日付の列" があるのですが、毎月、この日付の列は自分で書き直さなければならないようになっています。 以下のように並んでいます。(締めが17日なので、18日から始まります。) 18 水 19 木 20 金 21 土 22 日 23 月 24 火 25 水 26 木 27 金 28 土 29 日 30 月 31 火 1 水 2 木 3 金 4 土 5 日 6 月 7 火 8 水 9 木 10 金 11 土 12 日 13 月 14 火 15 水 16 木 17 金 初日の18を 2006/10/18 と入れたら、日付と曜日が自動的に並ぶようにしたいのですが、いくつか問題があって、うまく設定できずにいます。 1. 行を変えてはいけない。 2. 2月や4月など31日まで無い月は、その行を空白とする。 3. すべての社員のPCに分析ツールがインストールされているわけではなく、EDATE関数が使えない。 4. マクロを含めたくない。 5. シートは1枚で。 なにか良いアイデアないでしょうか? 足し算・引き算でうまくいかなければ、やはりマクロしかないのでしょうか?

  • エクセルで曜日指定のセル連続データを作りたい

    ウィンドウズ版のエクセル97を使ってます。 曜日指定の日付の入ったセルを作りたいのですが、セルの連続データのフィルハンドルでうまく行きません。簡単に出来る方法を教えて下さい。 具体例   2月 2日(土)       2月 5日(火)       2月 7日(木)       2月 9日(土)       2月12日(火)       2月15日(木)       2月17日(土)         ・         ・         ・

  • エクセル2003でAVERAGEIFのようなことをするには

    はじめて投降します。 エクセル2003にて条件に一致するセルの平均を出したいのですが どうしていいのかわかりません。 日付  曜  10 20 30 40 50 60 ------------------------------------ 1/1  月  99 98 95 99 89 91 1/2  火  91 95 92 99 89 85 1/3  水  99 99 92 88 87 85 1/4  木  98 87 85 87 99 99 1/5  金  89 97 99 89 87 91 1/6  土  92 93 94 95 99 89 1/7  日  91 89 84 87 91 87 1/8  月  95 96 93 97 98 99 ・   ・  ・ ・ ・ ・ ・ ・   ・   ・  ・ ・ ・ ・ ・ ・ ・   ・  ・ ・ ・ ・ ・ ・   たとえばこのような1ヶ月のデータがあり 月曜日の10の列の平均をもとめるには どうしたらよいでしょうか? 教えてくださいお願いします。

  • エクセルの日付用の関数

    仕事で週報という日計表を毎週提出することになりました。そこで、毎週、その週の月曜日の日付が先頭にくるようになる関数ってありますか。もうちょっと詳しく説明させていただくと、1枚の用紙を6等分して、各先頭セルに○月○日(月)~(土)という感じで入っていきます。月曜の日付が入力できたらそれぞれも(火)~(土)まで自動的に入るっていうのできますか。よろしくお願いします。

  • 選択日付(曜日)を◎で表示させたいのですが

    選択日付(曜日)を◎で表示させたいのですが ■選択 B1=年 C2=月 ■選択条件(入力規則/リスト選択) D3=リスト(月・火・水・木・金・土・月水金・月金・火木土・火木) から D20=リスト(月・火・水・木・金・土・月水金・月金・火木土・火木) ■一覧表表示 CT2 から DX2 まで横一行に1日から31日までの日付 その下の行から表示エリア CT3 から DX20 までの表にその選択年月のリスト指定曜日に 「◎」を表示させたい。 ■例(B1=22年 C2=6月 D3=月曜) CZ3=7日/DG3=14日/DN3=21日/DU3=28日 該当セルに◎表示 それ以外のセルは空白 どうぞお知恵をよろしくお願い致します。

  • Excelで週単位のセル連続データを作りたい

    WinのExcel2000を使っています。 仕事の進捗を記録しようと思い、日付の入ったシートを作ろうとしています。 毎日の日付を記入するには、セルの連続データの入力を使って簡単に出来るのですが、土日は不必要な上、毎日の日付をセルに表示してあるとかえって見にくいので、週の頭、月曜日のセルだけに日付を入れようと思いました。 具体的には、 月 12/18 火 水 木 金 (一行空白) 月 12/25 火 と言うように続いてゆくカレンダーを1年分くらい必要なのですが、右ドラッグで出てくるメニューの週日単位と言うものでは出来ないみたいだし、いったいどのようにすれば簡単に出来るでしょうか?

  • Excelカレンダーでのうるう年の処理

    よろしくお願いいたします。 A2以降に日付を固定で入力し、B2にそれに対応した曜日を表示させているのですが、 うるう年の処理に困っています。 例として、A1に2015/4/1と入れた場合、   列A 列B 行2 | 4/1 水 行3 | 4/2 木 行4 | 4/3 金 ~~~~~~~ 行335 | 2/27 土 行336 | 2/28 日 行337 | 2/29 月 行338 | 3/1 火 行339 | 3/2 水 のような形で表示されていたのを、A1に2014/4/1と入力した際には、   列A 列B 行2 | 4/1 火 行3 | 4/2 水 行4 | 4/3 木 ~~~~~~~ 行335 | 2/27 金 行336 | 2/28 土 行337 | 行338 | 3/1 日 行339 | 3/2 月 と表示されるようにしたいのです。 つまり、行の位置は変えずに、閏年で必要なときのみ2/29とその曜日が表示され、 必要ないときは、非表示にし、他の日付の曜日は自動的に変わるようにしたいです。 うまくやりたいことが伝えられていないような気がしますが、 どなたか教えて頂けないでしょうか。 よろしくお願いいたします。

  • エクセルの表作成について・・・。

    エクセルで、例えば、4/20水・21木・22金・23土・24日・25月・26火という一週間の収入棒グラフを作る際、土・日はお休みで、20・21・22・25・26のみを入力し作成したら、入力していない4/23・4/24が値のない日付だけが現れました。 この不要な土・日を出なくし20水・21木・22金・25月・26火という連続したグラフの作成法を教えてください。 よろしくお願いします!

  • Excel 曜日の連続データ作成

    Excelでセルに月曜と入力しドラッグしてコピーして連続データ(月、火、水、木、金、土、日)を作りたいんですけど出来ませんでした。 どうやるんですか? 自分のなかで一番の理想をしては例として9月1日(月)これの連続データを作りたいんです。 これだと一番楽が出来るはずなんですがでも実際できるのかもわかりません。 その他にも何月何日と曜日を織り交ぜた楽な方法があったらぜひ教えてください。 曜日だけでも結構です。

  • エクセル2010 列による条件付き書式

    宜しくお願いします。 ==================================================    1  2 3 4 5 6 7 8 9 10 11 12 13 14    月 火 水 木 金 土 日 月 火 水 木 金 土 日 予定 時間  ==================================================== 上記のような表があり、土曜と日曜の日付だけを黒塗りしたいです。 行であればデータのフィルタでできると思うのですが 列でフィルタをできるのでしょうか? 土日の部分だけ黒塗り(灰色の網掛け)、またはフィルタを掛けて 土日だけ表示させたいです。 簡単な方法があれば教えてください。 宜しくお願いします。

専門家に質問してみよう