エクセルで年月日の桁をそろえたいのですがうまく出来ません。

mやdを1つ増やすとかすると、そろったとしても03月09日と
前にゼロが入ってしまいます。
関数で、《もし一桁ならば前にスペースを》では別の列になってしまうので困るので
マクロしかないのでしたらマクロの方法を知りたいのですが・・・
どなたかよい方法を教えて下さい。

回答の条件
  • 1人2回まで
  • 登録:2009/09/27 07:07:22
  • 終了:2009/09/27 20:52:09

ベストアンサー

id:SALINGER No.4

SALINGER回答回数3454ベストアンサー獲得回数9692009/09/27 13:25:52

ポイント40pt

すいません。表示形式だけではうまくいかなかったようですね。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_hiduke.html


改めて見ると、こちらのコードには1ヶ所間違いがありますね。

正しくはこうです。

If Len(Format(c.Value, "d")) < 10 Then

If Format(c.Value, "d") < 10 Then
id:hanasitemiru

どうもありがとうございました。

この行が効いていない事だけは見えましたが

私の力では、とても修正にまでは至りませんでした。

おかげさまで解決致しました。

2009/09/27 20:05:09

その他の回答(5件)

id:tyousann No.1

tyousann回答回数1982ベストアンサー獲得回数542009/09/27 08:41:02

id:hanasitemiru

すみませんが見つけることが出来ませんでした。

2009/09/27 12:53:50
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692009/09/27 09:56:23

セルの表示形式をユーザー定義を使って揃えることができますよ。


具体的には、セルの書式設定から表示形式タブ、分類をユーザー定義、種類のところに次のように入れます。

[$-411]ggg_0e"年"_0m"月"_0d"日";@

「_0」を入れることでスペースが入ります。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_hiduke.html

id:hanasitemiru

教えて頂いたサイトのマクロを入れてみましたが、やり方が悪いのでしょうか

1桁日付では前にスペースが入ります

2桁日付でも前にスペースが入ってしまいます。

2桁日付では前にスペースが入らないものを望んでいます。

2009/09/27 12:53:56
id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862009/09/27 10:54:35

表示形式のユーザー定義で、次のようにしたらいかがでしょう。

表示 表示形式(ユーザ定義)
 9月 1日 _*m"月"_*d"日"
id:hanasitemiru

すみませんがうまく使えませんでした。

2009/09/27 12:54:02
id:SALINGER No.4

SALINGER回答回数3454ベストアンサー獲得回数9692009/09/27 13:25:52ここでベストアンサー

ポイント40pt

すいません。表示形式だけではうまくいかなかったようですね。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_hiduke.html


改めて見ると、こちらのコードには1ヶ所間違いがありますね。

正しくはこうです。

If Len(Format(c.Value, "d")) < 10 Then

If Format(c.Value, "d") < 10 Then
id:hanasitemiru

どうもありがとうございました。

この行が効いていない事だけは見えましたが

私の力では、とても修正にまでは至りませんでした。

おかげさまで解決致しました。

2009/09/27 20:05:09
id:Mook No.5

Mook回答回数1312ベストアンサー獲得回数3912009/09/27 13:35:37

ポイント40pt

SALINGER さんの提示されたリンクにあるマクロはこちら(Vista + Excel2007)では正常に動作しました。

動作が違うとなるとバージョン等が気になりますが、OSとEXCELのバージョンは何を使用していますか。


また日付の入力欄はA1:A50の範囲に限定されています。

今回変化はしているようなのでその範囲で試しているか、範囲を変更してはいると思いますが、その点は大丈夫でしょうか。


一応下記は、範囲を削除した例です。

必要に応じて元の形のように範囲を使用してみてください。


念のため日付と月の判定を日付関数に変更してみました

(シートタブの右クリック「コードの表示」で表示されるウインドウに下記をコピー)。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim fmt As String
    For Each c In Target
        If IsDate(c.Value) Then
            If Len(Format(c.Value, "e")) = 1 Then
                fmt = "[$-411]ggg_0e年"
            Else
                fmt = "[$-411]ggge年"
            End If
            If Month(c.Value) < 10 Then
                fmt = fmt & "_0m月"
            Else
                fmt = fmt & "m月"
            End If
            If Day(c.Value) < 10 Then
                fmt = fmt & "_0d日"
            Else
                fmt = fmt & "d日"
            End If
            c.NumberFormatLocal = fmt & ";@"
        End If
    Next c
End Sub

コメントが有効であると補足が簡単ですので、有効にされるとよいと思います。

id:hanasitemiru

すみません。

バージョンの違いで動作しなかったということに気が付きませんでした。

2003を使用しています。

1桁か或いは2桁かと見合ったfmt変数を追加していく方法ありがとうございました。

おかげさまで解決致しました。

2009/09/27 20:16:01
id:jccrh1 No.6

jccrh1回答回数111ベストアンサー獲得回数192009/09/27 16:49:41

ポイント30pt

マクロを作成してみました。

Range("F3:F999")の範囲は修正してください。

Sub 日付書式設定()
 Dim r As Range
 For Each r In Range("F3:F999")
   If VarType(r) = vbDate Then
     If Month(r) >= 10 Then m = "mm" Else m = "_0m"
     If Day(r) >= 10 Then d = "dd" Else d = "_0d"
     r.NumberFormatLocal = "yyyy""年""" & m & """月""" & d & """日"""
   End If
 Next
End Sub
id:hanasitemiru

ありがとうございました。

1行目だけ下のようにして

Private Sub Worksheet_Change(ByVal Target As Range)

シート内で作動しました。

解決致しました。

皆様どうもありがとうございました。

2009/09/27 20:47:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません