| 
    
     |  | イチゴ さん、こんにちわ。 
 >例えば
 >   1=あ 2=い 3=う 重複ならSになる。
 >   A1に”1”を入力するばB1に”あ”というひらがなになる。
 >   A2に”21”を入力すればB2に”いあ”
 >   A3に”22”を入力すればB3に”いS”になる
 関数名はTestです。
 
 Function test(a As String) As String
 Dim LL(0 To 9) As String, NN(0 To 9) As Integer
 Dim bb As String, blen As Integer, md As Integer, ss As String
 Dim II As Integer
 '数字に対応して変更する文字列
 LL(0) = "■"
 LL(1) = "あ": LL(2) = "い": LL(3) = "う"
 LL(4) = "え": LL(5) = "お": LL(6) = "か"
 LL(7) = "き": LL(8) = "く": LL(9) = "け"
 '初期文字列
 bb = a
 blen = Len(bb)
 '
 For II = 0 To 9
 Do
 md = InStr(bb, Format(II, "0"))
 If md = 0 Then Exit Do
 '数をカウント
 NN(II) = NN(II) + 1
 '2回目以降はS
 If NN(II) = 1 Then ss = LL(II) Else ss = "S"
 '文字の置き換え
 If md = 1 Then
 bb = ss & Right(bb, blen - 1) '頭
 ElseIf md = blen Then
 bb = Left(bb, blen - 1) & ss '末尾
 Else
 bb = Left(bb, md - 1) & ss & Right(bb, blen - md) '途中
 End If
 Loop
 Next
 '関数の戻り値
 test = bb
 End Function
 
 0とか4とか、最初に書いてなかったのに実行時には指定していたりするみたいなので、0から9までを何に変えるかをリストに持ってチェックしています。
 
 |  |