- ベストアンサー
Excelでプルダウンと連動して日付表示を変える方法。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。(年と月のセルは別々のリスト表示にしています。) ↓の画像のように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
その他の回答 (3)
まちがってました。コピーできませんね。 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,"") でした。
お礼
申し訳ありません。お礼を補足に入力してしまいました。 今回はみなさんにお早い回答をいただきまして非常に感謝しております。 まとめての入力で大変失礼ですが、改めて本当にありがとうございました。 今後もご質問させていただくことがあるかと思いますが、また機会があればよろしくお願いいたします。 ベストアンサーを決めかねていますが、質問締切できなくなってしまうため、ひとまず画像添付していただいたtom04さんにさせていただきました。 Bloodhandさん、mshr1962さんにも大変感謝しております。 今回は本当にありがとうございました。
補足
早速の回答ありがとうございます。 mshr1962さん同様、IF関数で実現できることを知り、非常に参考になります。 また詳しい記載ありがとうございます。 こちらも勉強させていただきたいと思います。 ありがとうございました。
別シートに 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」と指定します。
- mshr1962
- ベストアンサー率39% (7417/18945)
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までコピー
お礼
申し訳ありません。お礼を補足に入力してしまいました。 今回はみなさんにお早い回答をいただきまして非常に感謝しております。 まとめての入力で大変失礼ですが、改めて本当にありがとうございました。 今後もご質問させていただくことがあるかと思いますが、また機会があればよろしくお願いいたします。 ベストアンサーを決めかねていますが、質問締切できなくなってしまうため、ひとまず画像添付していただいたtom04さんにさせていただきました。 mshr1962さん、Bloodhandさんにも大変感謝しております。 今回は本当にありがとうございました。
補足
早速の回答ありがとうございます! IF関数で実現できるんですね。 私も早速作成してみたいと思います。 ありがとうございました。
お礼
申し訳ありません。お礼を補足に入力してしまいました。 今回はみなさんにお早い回答をいただきまして非常に感謝しております。 まとめての入力で大変失礼ですが、改めて本当にありがとうございました。 今後もご質問させていただくことがあるかと思いますが、また機会があればよろしくお願いいたします。 ベストアンサーを決めかねていますが、質問締切できなくなってしまうため、ひとまず画像添付していただいたtom04さんにさせていただきました。 Bloodhandさん、mshr1962さんにも大変感謝しております。 今回は本当にありがとうございました。
補足
こんにちは! 早速の回答ありがとうございます。 画像の添付や選択するメニューまで記載していただきまして、お手数おかけいたしました。 大変感謝しております。ありがとうございます。 こちらも参考させていただきながら、早速作成してみたいと思います。 ありがとうございました。