[[20030623235417]] 『日付の表示形式を2003/ 1/ 2に』(ちゅうねん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付の表示形式を2003/ 1/ 2に』(ちゅうねん)

初めて投稿させて頂きます。
日付の表示で、表示書式に「yyyy/m/d」を使って日付を表示させると、2003/1/2や2003/11/22の様に、月や日の桁数によってズレが生じます。「yyyy/mm/dd」を使うと桁は合いますが、2003/01/02という表示になります。ゼロを使わず、2003/ 1/ 2の様にスペースで位置を合わせたいのですが、そのような書式はありませんか?よろしくお願いします。


こんばんは。なかなかレスがつかないようですね。^_^;
 ただ、この質問は結構見ます。
 結論から言うと、表示形式のみでは不可能ですね。
                                           
 入力用と、表示用でセルを沸けることが出来るのであれば、関数を使って可能です。
 表示用セルに、=TEXT(A1,"yyyy/")&TEXT(A1,IF(MONTH(A1)>9,"m"、" m"))&TEXT(A1,IF(MONTH(A1>9,"/d"、"/ d"))

 と、言う事でしょうか。
 フォントは、等幅フォントにしてください。
 どうしても、同一セルに表示したいのであれば、VBAを使えば、出来ると思います。
 VBAは、得意ではないので、m(__)m

 (たまに見る人)

たまに見る人さん、アドバイスありがとうございました。
 確認しました。ちょっとミスタイプがありました。正しくは
 =TEXT(A1,"yyyy/")&TEXT(A1,IF(MONTH(A1)>9,"m/"," m/"))&TEXT(A1,IF(DAY(A1)>9,"d"," d"))
 ですね。
 今までは、入力をA1とし、B1、C1には =A1 を入れ、それぞれのセルの書式を
 yyyy/ と m/ と d  にして、最後に見栄えのために列の幅を調整していました。
 たまに見る人さんの方法は、私にとって新しい方法でした。
 表示形式のみでは不可能とのこと。納得しました。
 ホントありがとうございました。<感謝!>
  (ちゅうねん)

 右側から2桁取り出す裏技もあります。
 うーん、少しだけ短いかな。

 セルA1に表示したい日付が入っているとして、
 =YEAR(A1)&"/"&RIGHT(" "&MONTH(A1),2)&"/"&RIGHT(" "&DAY(A1),2)
 (kazu)

 kazuさん、ありがとうございました。
 動作確認 & 理解しました。
 <感謝^2!>(ちゅうねん)

 解決済みのようですが、
 以前私が作ったユーザー関数が手元に帰ってきたので、紹介します。
 (kazu)

 セルA1に今日の日付が入っているとして、
 セルB1に =gymd2(A1)と入力すると 2003/ 7/ 2 になります。
 セルB1などのフォントをMSゴシックにすれば、複数並べたとき桁が揃います。

 Gymd2が西暦用、Gymdが和暦用です、どちらか一方をコピーしてVBEの世界で
 標準モジュールを挿入して、貼り付けて使ってください。

 Function Gymd2(ymd)
 ' 年月日表示桁をそろえる(西暦用)
     fmty = "yyyy"
     fmtm = "m/"
     fmtd = "d"
     fmt = "yyyy/"
     If Month(ymd) > 9 Then
         fmt = fmt & fmtm
     Else
         fmt = fmt & " " & fmtm
     End If
     If Day(ymd) > 9 Then
         fmt = fmt & fmtd
     Else
         fmt = fmt & " " & fmtd
     End If
     Gymd2 = Format(ymd, fmt)
 End Function

 Function Gymd(ymd)
 ' 年月日表示桁をそろえる(和暦用)

     fmty = "ggge年"
     fmtm = "m月"
     fmtd = "d日"
     If Len(Format(ymd, "ggge")) > 3 Then
         fmt = fmty
     Else
         fmt = "ggg e年"
     End If
     If Month(ymd) > 9 Then
         fmt = fmt & fmtm
     Else
         fmt = fmt & " " & fmtm
     End If
     If Day(ymd) > 9 Then
         fmt = fmt & fmtd
     Else
         fmt = fmt & " " & fmtd
     End If
     Gymd = Format(ymd, fmt)
 End Function

 kazuさん、ありがとうございました。
 ユーザー関数を使うのは初めてでしたが、うまくできました。
 マクロでやっていることも何とか理解できました。
 ユーザー関数って便利ですねぇ。感涙!!
 (ちゅうねん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.