こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCELマクロでの曜日の表示

はじめまして。
EXCELマクロで曜日を表示させたいのですが、方法がわかりません。

A1セルに年、A2セルに月、A3~AE3に日付(1~31)
が入力されている状態で、A4~AE4に曜日(日・月・・・土)を表示
させたいのですが、どのようにすればよいでしょうか?

あまり文章を書くのが得意ではないので、わかりにくいかもしれませんが、宜しく御願いします

投稿日時 - 2009-03-19 17:43:04

QNo.4810221

すぐに回答ほしいです

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

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

投稿日時 - 2009-03-19 17:52:16

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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

投稿日時 - 2009-03-19 21:33:23

ANo.5

問題の記述から想像して、
「EXCEL関数での曜日の表示」と解釈すると

(1) A4セルに以下を入力
=MID("日月火水木金土",WEEKDAY(DATE($A$1,$A$2,A3)),1)
(2) A4セルをA5~AE4にコピー。

こんなもんかな?

投稿日時 - 2009-03-19 18:17:34

ANo.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

投稿日時 - 2009-03-19 18:01:32

ANo.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

投稿日時 - 2009-03-19 17:58:15

ANo.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

投稿日時 - 2009-03-19 17:50:30

あなたにオススメの質問