- ベストアンサー
日付について
始めまして、EXCEL、VBAを初めてまもない初学者です。 質問させていただきます。 上手く説明できるかわからないのですが、今回やりたいのは 例えば セル”A1"に月 セル”B1”に日にちを入力すると セル”C1”にその月日の曜日が自動で入るというものです。 (年の記入も必要であればどこかに記入出来ます) また、その後に セル”C1”からセル”C31”まで 月・火・水・木・金・土・月・火~と自動で入ってくれると良いのですが・・・ そういうものは出来るのでしょうか? わかりにく説明ですがアドバイスよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
前半部分は、 C1に「=TEXT(DATEVALUE(CONCATENATE(YEAR(TODAY()),"/",A1,"/",B1)),"aaa")」 という式を記述すればよいのではないでしょうか。 以下、上式の説明です。 ・CONCATENATE(YEAR(TODAY()),"/",A1,"/",B1)は「年/月/日」というテキストを作成します。 年は今年の年、月はセル"A1"、日はセル"B1"を使用しています。 年を指定したければ「YEAR(TODAY())」をセルに置き換えてください。 ・DATEVALUE(A)は、日付"A"をシリアル値に変換します。 ・TEXT(A, B)は、値"A"を表示形式"B"に変換します。今回は、"A"は日付のシリアル値、 "B"は"aaa"(これは曜日(「日~土」という形式)を示す表示形式です)です。 後半は、前半とのつながりが理解できなかったのですが、とりあえずご質問通りの結果を 出力する VBA を記述してみます。 ==== VBA コード ==== Sub hoge() Dim wd(6) As String Dim col, row As Integer wd(0) = "月" wd(1) = "火" wd(2) = "水" wd(3) = "木" wd(4) = "金" wd(5) = "土" col = 3 '出力を 3 列目にセット For row = 1 To 31 Cells(row, col) = wd((row - 1) Mod 6) '「A Mod B」は「A 割る B」の余り Next End Sub ==== end of VBA ==== 想定している状況などが異なっている場合、補足を追加してください。
お礼
家の都合で返事が凄く遅くなってしまいました。 ありがとうございます。上手くいきました。 またありましたら宜しくお願いします。