[[20210317104739]] 『カナ文字と数字を一括変換』(向日葵) ページの最後に飛ぶ

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

 

『カナ文字と数字を一括変換』(向日葵)

カナ文字50音を数字2桁にしてコードを作成しています。
<例> ア-11 イ-12 カ-21 キ-22
EXCELで作成したデータで、「数字」と「カナ文字」を一括で変換できる方法はありますか?

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 コード表を作って VLOOKUP関数とか?

 文字コードは JISやらUNICODEやら標準のものがあるのに、
 独自のコードをつくるのは、車輪の再発明というやつでは?
(´・ω・`) 2021/03/17(水) 10:58

カナ文字を数字に置き換えたのは何年も前の担当者で、これをJIS等に再度置き換えるのがかなり面倒です。
とりあえず、システムからCSVデータを抽出して、他の処理に使用するために、質問しました。

(向日葵) 2021/03/17(水) 11:12


 >カナ文字を数字に置き換えたのは何年も前の担当者
 それは大変ですね。

 1文字だけ変換するなら、VLOOKUP関数で、
 たとえば、 アイウ のような文字列を 111213 と変換したいなら、
 マクロのほうが楽な気がします。

 が、そのコード表を見てみないとわかりません。
(´・ω・`) 2021/03/17(水) 11:22

 *2*2のアレでしょうか?

 ポケベルコード変換表どおりで良いならWeb上にもいくつか良いものがあります。

(きまぐれおじさん) 2021/03/17(水) 11:45


 >ポケベルコード
 なるほど。 全然ぴんときてませんでした。すみません
(´・ω・`) 2021/03/17(水) 12:02

下記の方法で50音表が作成してあります。

母音 ア-1 イ-2 ウ-3 エ-4 オ-5

子音 ア-11 カ-21 サ-31 タ-41 ナ-51 ハ-61 マ-71 ヤ-81 ラ-91 ワ-97 ヲ-98

簡単なので、そのまま使用していたようです。
(向日葵) 2021/03/17(水) 12:07


 とりあえず(って感じでもないですが)こんな感じの関数を自作しちゃうとか?

    Function testEnc(StrUTF As String) As String
        Dim i As Long
        For i = 1 To Len(StrUTF)
            Select Case Mid$(StrUTF, i, 1)
                Case "ア": testEnc = testEnc & "11"
                Case "イ": testEnc = testEnc & "12"
                Case "カ": testEnc = testEnc & "21"
                Case "キ": testEnc = testEnc & "22"
                Case Else: testEnc = testEnc & Mid$(StrUTF, i, 1)
            End Select
        Next
    End Function
    Function testDec(NumStr As String) As String
        Dim i As Long
        For i = 1 To Len(NumStr) Step 2
            Select Case Mid$(NumStr, i, 2)
                Case "11": testDec = testDec & "ア"
                Case "12": testDec = testDec & "イ"
                Case "21": testDec = testDec & "カ"
                Case "22": testDec = testDec & "キ"
                Case Else
                    testDec = testDec & Mid$(NumStr, i, 1)
                    i = i - 1
            End Select
        Next
    End Function

(白茶) 2021/03/17(水) 12:20


 ポケベルともちょっとちがうんですかね?

    Function myCode(ByVal S As String)
      Const sList As String = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン"
      Const cList As String = "11121314152122232425313233343541424344455152535455616263646571727374758183859192939495979899"
      Dim ret As String
      Dim i As Long, p As Long
      S = StrConv(S, vbKatakana And vbWide)
      For i = 1 To Len(S)
         p = InStr(sList, Mid(S, i, 1))
         If p > 0 Then ret = ret & Mid(cList, p * 2 - 1, 2) Else ret = ret & Mid(S, i, 1)
      Next
      myCode = ret
    End Function
(´・ω・`) 2021/03/17(水) 13:31

やはり、関数を自作しないとですよね。
やってみます。
ありがとうございました。
(向日葵) 2021/03/17(水) 16:55

コメント返信:

[ 一覧(最新更新順) ]


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