• ベストアンサー

EXCELマクロでの曜日の表示

はじめまして。 EXCELマクロで曜日を表示させたいのですが、方法がわかりません。 A1セルに年、A2セルに月、A3~AE3に日付(1~31) が入力されている状態で、A4~AE4に曜日(日・月・・・土)を表示 させたいのですが、どのようにすればよいでしょうか? あまり文章を書くのが得意ではないので、わかりにくいかもしれませんが、宜しく御願いします

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

マクロでなくてはダメなのでしょうか? A4セルに =DATE($A1,$A2,A3) と入れて 書式を ユーザー定義 で aaa 右へコピィしてみてください。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 >A1セルに年、A2セルに月、A3~AE3に日付(1~31) >が入力されている状態で、A4~AE4に曜日(日・月・・・土)を表示 >させたいのですが 少なくとも、末日まで入力するとすれば、31までとは限りません。 それから、マクロでなくてはならない理由はないとしたら、マクロならではの特別な部分が必要だと思います。当然、日付もマクロで入れます。 Sub Test()   Dim y As Integer   Dim m As Integer   Dim i As Integer   Dim mDate As Variant   y = Range("A1").Value   m = Range("A2").Value   If Not IsDate(DateSerial(y, m, 1)) Then     MsgBox "日付が入っていないかもしれません。", vbInformation     Exit Sub   Else     mDate = DateSerial(y, m, 1)     If Year(mDate) > 2020 Or Year(mDate) < 1901 Then       MsgBox "年数の入れ方が違うかもしれません。", vbCritical       Exit Sub     End If   End If   i = Day(DateSerial(y, m + 1, 0))   Range("A3").Resize(2, 31).Clear   Range("A3").Value = mDate   Range("B3").Resize(, i - 1).Formula = "=RC[-1]+1"   Range("A4").Resize(, i).Formula = "=R[-1]C"   Range("A3").Resize(, i).NumberFormatLocal = "d"   Range("A4").Resize(, i).NumberFormatLocal = "aaa" End Sub

回答No.5

問題の記述から想像して、 「EXCEL関数での曜日の表示」と解釈すると (1) A4セルに以下を入力 =MID("日月火水木金土",WEEKDAY(DATE($A$1,$A$2,A3)),1) (2) A4セルをA5~AE4にコピー。 こんなもんかな?

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

一例です。 Sub test() Dim Rng As Range Range("A4").FormulaR1C1 = "=DATE(R1C1,R2C1,R[-1]C)" Set Rng = Range(Range("A3"), Range("A3").End(xlToRight)).Offset(1) Range("A4").AutoFill Destination:=Rng, Type:=xlFillDefault Rng.NumberFormatLocal = "aaa" End Sub

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

#1です。勘違いしてました。日付けまで入っているのですね。 曜日はFormat関数で表示できます。 For i = 1 To 31 If ActiveSheet.Cells(3, i).Value <> "" Then ActiveSheet.Cells(4, i).Value = Format(DateSerial(ActiveSheet.Cells(1, 1).Value, ActiveSheet.Cells(2, 1).Value, ActiveSheet.Cells(3, i).Value), "aaa") End If Next i

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

別々のセルに入力されているデータから日付けを生成するのは DateSerial関数 が便利です。 Dim i As Integer i = 3 With ActiveSheet .Cells(i, 1).Value = DateSerial(.Range("A1").Value, .Range("A2").Value, i - 2) End With

関連するQ&A

専門家に質問してみよう