- ベストアンサー
Excel VBAで日付を曜日に変換したい。
Excel VBAで日付を曜日に変換したい。 A1セル:2010/6/2 を B1セル:水 とするには、Excel VBA ではどうすればいいのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
次のようにしても良いでしょう。 Range("B1") = WeekdayName(Weekday(Range("A1")), True)
その他の回答 (5)
- layy
- ベストアンサー率23% (292/1222)
日付の関数でWEEKDAY関数が見つかったが、曜日でなく数字だったから質問、と察します。 このWEEKDAY関数結果からさらにCHOOSE関数使うと月火水と変換できます。 CHOOSE(WEEKDAY(求めたい日付),日,月,火・・)という感じです。 CHOOSE関数は、ヘルプやネットでもWEEKDAYの曜日変換説明と合わせて掲載される事多いです。こちらも覚えた方が良いと思います。CHOOSE関数を学習して下さい。 どれを使ったらダメという訳でないので参考に。
- keithin
- ベストアンサー率66% (5278/7941)
range("B1") = weekdayname(weekday(range("A1")),true) なんてやり方もありはしますが,format(range("A1"),"aaa")の方が手っ取り早いですね。 range("B1") = range("A1") range("B1").numberformatlocal = "aaa" あるいはそもそも range("A1").numberformatlocal = "m/d(aaa)" のようなやり方で済ませてしまう場合も多いです。 #余談 しばしばweekday関数(VBAであれワークシートの関数でアレ)で曜日の数字を計算する事を,「曜日を表示する」と勘違いしている人を見かけます。 WEEKDAY関数で1,2,3を計算したセルに曜日を表示する書式を付けると,たまたま正しい曜日の文字を表示してしまうのが勘違いの主な原因ですが,WEEKDAY関数はあくまでも曜日に対応する1,2,3…の数字を計算するだけのものです。 「正しい」使用例: =CHOOSE(WEEKDAY(TODAY()),"月","月","火","水","木","金","金") 正しい使用例: セルには年/月/日の日付をそのままにしておき,書式で aaa や aaaa の表示をつける 正しい使用例: =TEXT(TODAY(),"aaa") などで,実文字としての曜日の文字を計算させる
- merlionXX
- ベストアンサー率48% (1930/4007)
どうしてもWeekday関数を使いたければ Sub Sample01() If IsDate(Range("A1").Value) Then Select Case Weekday(Range("A1").Value) Case 1 Range("B1").Value = "日曜日" Case 2 Range("B1").Value = "月曜日" Case 3 Range("B1").Value = "火曜日" Case 4 Range("B1").Value = "水曜日" Case 5 Range("B1").Value = "木曜日" Case 6 Range("B1").Value = "金曜日" Case 7 Range("B1").Value = "土曜日" End Select End If End Sub Sub Sample02() Dim myAr() myAr = Array("日", "月", "火", "水", "木", "金", "土") If IsDate(Range("A1").Value) Then Range("B1").Value = myAr(Weekday(Range("A1").Value) - 1) End If End Sub のようになりますね。 ご覧になってお分かりのようにWeekday関数は1から7までの数値を返しますので、その数値を日本語に変換してあげる手間がかかります。その点、 Range("B1").Value = Format(Range("A1").Value, "aaa")とした方が、日本語変換はFormatで簡単にできちゃいますから楽ですよね。
- nattocurry
- ベストアンサー率31% (587/1853)
まずは、VBAを使わずに、B1に =A1 と入力して、B1の表示形式を aaa にしてみてください。 それで何が起きるのかが判れば、#1の回答の意味も少しは解ると思います。
- kybo
- ベストアンサー率53% (349/647)
Format(Range("A1").Value, "aaa")
補足
Weekdayという関数(とういうんですか?)は使わなくてもいいんでしょうか?
お礼
たくさんの回答、ありがとうございます。 これを使わせていただきます。