|
> ですから、今は0だけが反応しないです。
だから、0 のときは、どうなるのって聞いていたのですが・・・
当初の質問では、例だとしても、1 が "あ" ですから 0 が無いのかと・・・
例えば、0〜9をそれぞれ "あ"〜"こ" の文字に変換とか表現してくれれば・・・
> そして、1212と入れたら、なんか”あいSS”になります
> これになると数値の意味は1222になっているではないでしょうか?
これは、左側に既にある数字のときは、S に変換する と解釈したのです。
ということで、今の仕様は、
書式 : =NumtoStr( 数値 )
使用例 : =NumtoStr(A1) A1 に 001233 が入力されているとき、"ASBCDS" を返します。
ただし、先頭に 0 が付加されていますから、書式が文字列にする必要があります。
書式で設定しても補足した 0 は、無視されます。
戻り値は、引数に指定した数値に対して、0〜9 を A〜J にそれぞれ変換します。
ただし、同じ数字が続く限り、その最初だけを上記の変換をし、あとは、S に変換します。
もし、数字以外が含まれている場合は、その文字だけを無視します。
こんな感じで宜しいのでしょうか。
Function NumtoStr(S As Variant) As String
Dim StrRe As String
Dim N As Integer
Dim Num As Integer
Dim W As Variant
If Len(S) = 0 Then
NumtoStr = vbNullString
Exit Function
End If
For N = 1 To Len(S)
If IsNumeric(Mid(S, N, 1)) Then
Num = Val(StrConv(Mid(S, N, 1), vbNarrow))
'下の " " の中には、0〜9 に対応する文字を設定する 現在 0→"A"
W = Choose(Num + 1, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
If Not IsNull(W) Then
If Right(Replace(StrRe, "S", ""), 1) = W Then
StrRe = StrRe & "S"
Else
StrRe = StrRe & W
End If
End If
End If
Next N
NumtoStr = StrRe
End Function
|
|