Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10129 / 13646 ツリー ←次へ | 前へ→

【23528】西暦に変換するには・・? saho 05/3/25(金) 17:05 質問[未読]
【23529】Re:西暦に変換するには・・? Jaka 05/3/25(金) 17:24 回答[未読]
【23531】Re:西暦に変換するには・・? saho 05/3/25(金) 17:44 質問[未読]
【23534】Re:西暦に変換するには・・? ponpon 05/3/25(金) 18:50 回答[未読]
【23535】Re:西暦に変換するには・・? ichinose 05/3/25(金) 18:57 発言[未読]
【23539】Re:西暦に変換するには・・? [名前なし] 05/3/26(土) 2:59 回答[未読]
【23541】Re:西暦に変換するには・・? saho 05/3/26(土) 15:43 お礼[未読]

【23528】西暦に変換するには・・?
質問  saho  - 05/3/25(金) 17:05 -

引用なし
パスワード
   文字列で例えば"3500816"というデータが入っていて、

一文字目が1=明治、2=大正、3=昭和、4=平成 で、
2文字目と3文字目が 〜年
4文字目と5文字目が 〜月
6文字目と7文字目が 〜日

を表すときに、

これを西暦に変換したいのです。

上の例でいくと、

3500816→1970/8/16 (数値で表せば→27622)

と変換させたいのですが、よい方法があるでしょうか?

【23529】Re:西暦に変換するには・・?
回答  Jaka  - 05/3/25(金) 17:24 -

引用なし
パスワード
   こんにちは。
こんな感じに分解して日付に変換してください。

MsgBox CDate("昭和50年08月16日")

因みに
>3500816→1970/8/16
       ↓
     1975/8/16 でした。

【23531】Re:西暦に変換するには・・?
質問  saho  - 05/3/25(金) 17:44 -

引用なし
パスワード
   ▼Jaka さん:
>こんにちは。
>こんな感じに分解して日付に変換してください。
>
>MsgBox CDate("昭和50年08月16日")
>
>因みに
>>3500816→1970/8/16
>       ↓
>     1975/8/16 でした。

もっとたくさんのデータがあって、

となりのセルに表示させたいのですが、

どうでしょうか?

【23534】Re:西暦に変換するには・・?
回答  ponpon  - 05/3/25(金) 18:50 -

引用なし
パスワード
   ▼saho さん:
ponpon です。こんばんは。

>もっとたくさんのデータがあって、
>
>となりのセルに表示させたいのですが、
>
>どうでしょうか?

A列の数字を隣のB列に表示します。
実際にない日なんかのエラー対策はしていません。
いかがでしょう。

Sub test()
  Dim myRng As Range
  Dim r As Range
  Dim myNen As Integer
  Dim 元号 As String
  Dim Nen As String
  Dim Gatu As String
  Dim Hi As String
  
  
  Set myRng = Range("A1", Range("A65536").End(xlUp))
  For Each r In myRng
   myNen = Left(r.Text, 1)
  Select Case myNen
    Case Is = 4
    元号 = "平成"
    Case Is = 3
     元号 = "昭和"
    Case Is = 2
     元号 = "大正"
    Case Is = 1
     元号 = "明治"
   End Select
     Nen = Mid(r.Text, 2, 2)
     Gatu = Mid(r.Text, 4, 2)
     Hi = Right(r.Text, 2)
  
     r.Offset(0, 1).Value = CDate(元号 & Nen & "年" & Gatu & "月" & Hi & "日")
    
   Next
  
End Sub

【23535】Re:西暦に変換するには・・?
発言  ichinose  - 05/3/25(金) 18:57 -

引用なし
パスワード
   saho さん、Jakaさん、 ponponさん、こんばんは。
>
>>もっとたくさんのデータがあって、
>>
>>となりのセルに表示させたいのですが、
>>
>>どうでしょうか?

数式でもこんな方法で可能です。例えばセルA1に3500816と入っていた場合、

「=DATEVALUE(CHOOSE(MID(A1,1,1),"明治","大正","昭和","平成")
&MID(A1,2,2)&"年"& MID(A1,4,2)& "月"& MID(A1,6,2)& "日")」

後は、書式設定を日付にしてみて下さい。

【23539】Re:西暦に変換するには・・?
回答  [名前なし]  - 05/3/26(土) 2:59 -

引用なし
パスワード
   数式ならこんなのでも。

=(MID("MTSH",LEFT(A1,1),1)&TEXT(RIGHT(A1,6),"00-00-00"))*1

こちらも、表示形式を日付にしてみてください。

【23541】Re:西暦に変換するには・・?
お礼  saho  - 05/3/26(土) 15:43 -

引用なし
パスワード
   返信くださった皆様、

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

大変勉強になりました。m(_ _)m

10129 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free