- ベストアンサー
EXCELマクロでの曜日の表示
はじめまして。 EXCELマクロで曜日を表示させたいのですが、方法がわかりません。 A1セルに年、A2セルに月、A3~AE3に日付(1~31) が入力されている状態で、A4~AE4に曜日(日・月・・・土)を表示 させたいのですが、どのようにすればよいでしょうか? あまり文章を書くのが得意ではないので、わかりにくいかもしれませんが、宜しく御願いします
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
マクロでなくてはダメなのでしょうか? A4セルに =DATE($A1,$A2,A3) と入れて 書式を ユーザー定義 で aaa 右へコピィしてみてください。
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >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
- AppleRiver
- ベストアンサー率61% (21/34)
問題の記述から想像して、 「EXCEL関数での曜日の表示」と解釈すると (1) A4セルに以下を入力 =MID("日月火水木金土",WEEKDAY(DATE($A$1,$A$2,A3)),1) (2) A4セルをA5~AE4にコピー。 こんなもんかな?
- merlionXX
- ベストアンサー率48% (1930/4007)
一例です。 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)
#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)
別々のセルに入力されているデータから日付けを生成するのは DateSerial関数 が便利です。 Dim i As Integer i = 3 With ActiveSheet .Cells(i, 1).Value = DateSerial(.Range("A1").Value, .Range("A2").Value, i - 2) End With