みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelでプルダウンと連動して日付表示を変える方法。

Excelでプルダウンと連動して日付表示を変える方法。

Excelについてご教授お願いいたします。
現在Excelの勉強中で、勤務表などを作成したいと考えています。
プルダウンから2010年01月など日付を選ぶだけで、その選択したリストに連動して、下の部分にその月ごとの日付や曜日が表示されるようにするにはどのように設定すればよろしいのでしょうか?
プルダウンリストの月ごとに29日、30日、31日と表示を変化させるためには、別sheetを参照するプルダウンリストの作成などで作成できるものなのか、それともVBAを新たに勉強する必要がありますでしょうか?
方法を教えていただければ幸いです。

投稿日時 - 2010-10-12 01:12:14

QNo.6244040

困ってます

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

こんばんは!
一例です。(年と月のセルは別々のリスト表示にしています。)

↓の画像のようにA3セルに「年」・C3セルに「月」を別々のプルダウンで表示すれば
その月の日付・曜日を表示するようにしてみました。

Sheet2に年と月の表があるとします。
別Sheetを直接入力規則のリスト範囲に指定できないと思いますので、それぞれの範囲を「名前定義」しておきます。
当方使用のExcel2003の場合です。

まず、Sheet2のA1~A7セルを範囲指定 → メニュ → 挿入 → 名前 → 作成 → 「上端行」を選択し、OK
これでA2~A7セルが「年」と名前定義されます。
B1~B13セルを範囲指定 → 同様の操作 でB2~B13が「月」と名前定義できました。

(A2~A7を範囲指定し、直接名前ボックスに 年 と入力しても構いません)

そしてSheet1のA3セルをアクティブにし、
メニュー → データ → 入力規則 → 「リスト」を選択し、「元の値」の欄に
=年  としてOK
同様に、C3セルの入力規則の「リスト」から「元の値」の欄に
=月  としてOK
これでA3・C3セルにそれぞれSheet2で名前定義したものがリスト表示できるようになりましたので、

B6セル(セルの書式設定の表示形式は d としておきます)は
=IF(COUNTBLANK($A$3:$C$3),"",IF(MONTH(DATE($A$3,$C$3,ROW(A1)))=$C$3,DATE($A$3,$C$3,ROW(A1)),""))

C6セル(セルの書式設定の表示形式は aaa としておきます)は
=IF(B6="","",B6)

として、B6・C6セルを範囲指定し、C6セルのフィルハンドルで31日の36行目までオートフィルでコピーすると
画像のような感じになります。(大の月・小の月にも対応しているはずです)

以上、長々と書いてしまいました。
参考になれば良いのですが・・・m(__)m

投稿日時 - 2010-10-12 02:46:42

補足

こんにちは!
早速の回答ありがとうございます。
画像の添付や選択するメニューまで記載していただきまして、お手数おかけいたしました。
大変感謝しております。ありがとうございます。

こちらも参考させていただきながら、早速作成してみたいと思います。
ありがとうございました。

投稿日時 - 2010-10-12 11:49:03

お礼

申し訳ありません。お礼を補足に入力してしまいました。

今回はみなさんにお早い回答をいただきまして非常に感謝しております。
まとめての入力で大変失礼ですが、改めて本当にありがとうございました。
今後もご質問させていただくことがあるかと思いますが、また機会があればよろしくお願いいたします。
ベストアンサーを決めかねていますが、質問締切できなくなってしまうため、ひとまず画像添付していただいたtom04さんにさせていただきました。
Bloodhandさん、mshr1962さんにも大変感謝しております。
今回は本当にありがとうございました。

投稿日時 - 2010-10-12 11:56:35

ANo.4

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

まちがってました。コピーできませんね。
B33=IF(MONTH(B32+1)=MONTH(A3),B32+1,"")
B34=IF(MONTH(B32+2)=MONTH(A3),B33+1,"")
B35=IF(MONTH(B32+3)=MONTH(A3),B34+1,"")
でした。

投稿日時 - 2010-10-12 01:44:47

補足

早速の回答ありがとうございます。

mshr1962さん同様、IF関数で実現できることを知り、非常に参考になります。
また詳しい記載ありがとうございます。

こちらも勉強させていただきたいと思います。
ありがとうございました。

投稿日時 - 2010-10-12 11:44:31

お礼

申し訳ありません。お礼を補足に入力してしまいました。

今回はみなさんにお早い回答をいただきまして非常に感謝しております。
まとめての入力で大変失礼ですが、改めて本当にありがとうございました。
今後もご質問させていただくことがあるかと思いますが、また機会があればよろしくお願いいたします。
ベストアンサーを決めかねていますが、質問締切できなくなってしまうため、ひとまず画像添付していただいたtom04さんにさせていただきました。
Bloodhandさん、mshr1962さんにも大変感謝しております。
今回は本当にありがとうございました。

投稿日時 - 2010-10-12 11:56:47

別シートに
1/1
2/1
3/1

といったデータを列方向にでも作成して、範囲名を決めておきます。
A3には入力規則を設け、リストから選択できるようにします。
この際、リストは「セルの書式設定」で「日付」で「2001年3月」を選択します。
・入力規則のリスト用データを別シートにまとめる:Excel エクセルの使い方-入力規則
http://www.relief.jp/itnote/archives/000210.php
---
B6=A3
B7=A3+1
とし、B7を下方にB32までコピーします。
B33=IF(MONTH(B$32+1)=MONTH(A$3),B32+1,"")
とし、B34とB35にコピーします。

B5からB35まで、「セルの書式設定」で「ユーザー定義」で「d」と設定します。
---
C5からC35までを範囲選択し、そのまま
=A5
と入力し、Ctrlを押しながらEnterキーを押下します。
そのままCtrl+1 で「セルの書式設定」を出し、「ユーザー定義」で「aaa」と指定します。

投稿日時 - 2010-10-12 01:37:23

ANo.1

A3="2010/1/1"
※表示形式 yyyy年mm月
なら
B6=IF(MONTH($A$3+ROW()-6)=MONTH($A$3),$A$3+ROW()-6,"")
※表示形式 d
C6=IF(B6="","",TEXT(B6,"aaa"))

でB6:C6をB31:C31までコピー

投稿日時 - 2010-10-12 01:30:42

補足

早速の回答ありがとうございます!

IF関数で実現できるんですね。
私も早速作成してみたいと思います。
ありがとうございました。

投稿日時 - 2010-10-12 11:41:34

お礼

申し訳ありません。お礼を補足に入力してしまいました。

今回はみなさんにお早い回答をいただきまして非常に感謝しております。
まとめての入力で大変失礼ですが、改めて本当にありがとうございました。
今後もご質問させていただくことがあるかと思いますが、また機会があればよろしくお願いいたします。
ベストアンサーを決めかねていますが、質問締切できなくなってしまうため、ひとまず画像添付していただいたtom04さんにさせていただきました。
mshr1962さん、Bloodhandさんにも大変感謝しております。
今回は本当にありがとうございました。

投稿日時 - 2010-10-12 11:57:19

あなたにオススメの質問