ExcelVBAでカタカナを数値に変換する関数を書いてみる

ExcelVBAでカタカナを数値に変換する関数を書いてみる

ア→1, イ→2, ウ→3 のように、指定した文字列を対応する数値に変換する関数です。配列に入れ込むだけなので、カタカナじゃなくても、指定さえすればわりとなんでもいけると思います。


Functionプロシージャを使う

今までずっと、Subプロシージャを使ってきましたが、今回はFunctionプロシージャというものを使ってみます。Subと違って、引数を受け取り、戻り値を返すことができるので、関数として使えます。

120530-1

イメージとしては、こんな感じ。Callにも似てますが、戻り値を返すというのが特徴です。

Function

Function change_n(val As String) As Integer 'カタカナを数値に変換する関数
  Dim ary As Variant, i As Integer

  ary = Array("ア", "イ", "ウ", "エ", "オ", "カ", "キ") 'もっと書けます
  For i = 0 To 6 '配列はゼロから始まる
    If val = ary(i) Then
      change_n = i + 1 '一致した番号を取得
      Exit For
    End If
  Next i
End Function

配列の中に、カタカナをあらかじめ入れておいて、その配列の数値を持ってこようという、簡単な構造です。もちろんひらがなでも、記号でも順番通りにかいておけばなんでも使えます。

Sub

Sub sample()
  Dim val As String, i As Integer

  val = Range("A1")
  i = change_n(val) '関数へ引渡し
  MsgBox val & "は数値にすると" & i & "です"
End Sub

いつものSubプロシージャ。Range("A1")になにかしらカタカナが入っている前提です。5行目で、さきほどのFunctionを呼び出します。

Functionで作っておくことで、何度か同じことをしたい時にSub側では1行で済むので結構便利です!

公開日:2012/05/30

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。