漢数字(日付)を数値として認識してみる
一昨日、8桁の数値を日付データへ変換してみた。
infoment.hatenablog.com
色々やるうちに、漢字の日付も変換したくなった。
そこで今日は、日付の関数時を数値として認識することに挑戦する。
万・億・兆と大きな桁になると話は別だが、日付に登場する一~三十一までを変換するならば、さほど難しくない。
今回の作戦は、↓ こうだ。
- 漢数字を単純に、数字に置き換える。
- 文字数から判断して、「十」を「10」として扱う。
Function ChineseToArabicNumerals(str As String) As Long Dim Sorce As String Sorce = "一二三四五六七八九〇" Dim Destination As String Destination = "1234567890" ' まず単純に置換する。 Dim i As Long For i = 1 To 10 str = Replace(str, _ Mid(Sorce, i, 1), _ Mid(Destination, i, 1)) Next ' 文字数から判別して、「十」を「10」に置き換える。 Select Case Len(str) Case 1 If str = "十" Then str = 10 Case 2 If Right(str, 1) = "十" Then str = Left(str, 1) * 10 Else str = 10 + Right(str, 1) End If Case 3 str = Left(str, 1) * 10 + Right(str, 1) End Select ChineseToArabicNumerals = str End Function
試しに、一~三十一が上手く変換されるか確認してみた。
どうやら、上手くいったようだ。
と、ここで時間切れ。明日は、「二〇一九年七月三日」を「2019/7/3」へ変換することに挑戦です。
参考まで。