- ベストアンサー
エクセルの表に日付と曜日を表示させたい
エクセルで表を作りはじめ、現状は以下の通りです。 まずA1には2009/04/01と入力します。 A2~A32へは日付を表示させるため =A1+1 ~=A1+31の式を入力しておいて、セルの書式設定の表示形式で Dとして日付を表示できるようにしました。 B2~B32へは同様の式を入力し、書式設定で AAAとして曜日を表示できるようにはしました。 ところが、この方法だと、1月が31日でない(少ない)場合には最後の部分に翌月の1日などのデータを表示させてしまいます。 これを防ぐ方法はありますか? 式とかの変更はまだまだ可能なので、良い方法を教えてください。お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
単純にやるなら、まず、B37のセルに=MONTH(A1)と入れて月だけを表示させます。 その後、A29に=IF($B$37=2,"",A1+28)として、A30に=IF($B$37=2,"",A1+29)、A31に=IF(OR($B$37=2,$B$37=4,$B$37=6,$B$37=9,$B$37=11),"",A1+30)とすればできます。ただし閏年の時は工夫がいりますが。その場合、自動でやるか閏年であることは自分で判断するかで変わってきますが。
その他の回答 (4)
- gyouda1114
- ベストアンサー率37% (499/1320)
ご参考 作成例2 2に小の月、2月等の31日がない月のの処理方法がありますよ 文字/数式の入力 http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/gekkan-n.htm#nyuryoku
お礼
早速ありがとうございます 参考のHPも役に立ちました
- CMLT
- ベストアンサー率40% (143/357)
B1を作業セルに使用する方法例 B1を =DATE(YEAR(A1),MONTH(A1)+1,1) として翌月1日を格納し、文字色を白にして不可視にしておく。 A列29日以降(A30~A32)に =IF(A$1+ROW()-1<B$1,A$1+ROW()-1,"") をコピーする。(A2~A32全てでも構わない) B2に =IFERROR(WEEKDAY(A2),"") を入力し、表示形式をaaaにしてB32までコピー。 不可視ではなく、""にすることでC列以降の条件分けにも応用ができます。 もし日曜の色を赤にするなら条件付き書式で1の時赤に。 曜日にWEEKDAY関数をお勧めするのは、B列にも日付のシリアル値が格納されていると条件付き書式で関数を使用しなくてはなりませんので…他にも集計などに役立ちます。
お礼
早速ありがとうございます 以前は条件付書式で不可視を利用していましたが、出来るだけIF関数などにするように最近始めました。
- mu2011
- ベストアンサー率38% (1910/4994)
前行+1とすると空白に加算する事にになるので次の方法は如何でしょうか。 A2に=IF(MONTH($A$1)=MONTH($A$1+ROW(A1)),$A$1+ROW(A1),"")、B2に=A2を設定、A2:B2範囲を選択して下方向にコピー
お礼
早速ありがとうございます 参考にさせていただきます
- Cupper
- ベストアンサー率32% (2123/6444)
自分ならA列には数式は入れません A1セルに 2009/04/01 と入力したらA1セルの右下角をドラッグしてコピーします (マウスカーソルを合わせてカーソルの形が変わったらマウスの左ボタンを押したまま下などへ移動させボタンから指を離す) そして29行目から31行目を選択した状態で 条件付き書式に 次の月が表示されるのであれば背景色と同じ色で表示するように設定します (32行目は必ず次の月になりますよ?) 質問者のやり方であればA2セルに次の数式を入力してA2セルをA32セルまでコピーでしょうか =IF(MONTH(A$1)=MONTH(A$1+ROW(A1)),TEXT(A$1+ROW(A1),"yyyy/mm/dd"),"") ※ それぞれ使用している関数は Excelのヘルプを参照してください A$1 はA1セルを行方向に対して絶対的に参照する形式です これによって行を変えてコピーしても必ずA1セルを参照するようになります これを【絶対参照】と言います 行を示す数字の前に"$"をつけると行に対して、列を示すアルファベットの前につけると列に対して 絶対参照をします 例: $A1 、 $A$1 など
お礼
早速ありがとうございました 絶対参照は活用しています。
お礼
早速ありがとうございます。 とりあえずうるう年は関係ないのでこの方法が一番簡単ですね