• ベストアンサー

日付について

始めまして、EXCEL、VBAを初めてまもない初学者です。 質問させていただきます。 上手く説明できるかわからないのですが、今回やりたいのは 例えば セル”A1"に月 セル”B1”に日にちを入力すると セル”C1”にその月日の曜日が自動で入るというものです。 (年の記入も必要であればどこかに記入出来ます) また、その後に セル”C1”からセル”C31”まで 月・火・水・木・金・土・月・火~と自動で入ってくれると良いのですが・・・ そういうものは出来るのでしょうか? わかりにく説明ですがアドバイスよろしくお願いします。

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

  • ベストアンサー
回答No.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 ==== 想定している状況などが異なっている場合、補足を追加してください。

sekomike
質問者

お礼

家の都合で返事が凄く遅くなってしまいました。 ありがとうございます。上手くいきました。 またありましたら宜しくお願いします。

関連するQ&A