|
こんにちは。かみちゃん です。
>1."あいうえおかきくけこ"
>2."あいう111おかきくけこ"
>3."あいう1えおかきくけこ"
>と3つの文字列があって
>文字列1=10バイトまで
>文字列2=10バイトまでとわけたいのですが・・・。
>=MIDB("文字列",1,10)
>=MIDB("文字列",11,10)
>と関数を入れますと
>
>1.は
>文字列1="あいうえお"
>文字列2="かきくけこ"
>2.は
>文字列1="あいう111 "
>文字列2="おかきくけ"
>3.は
>文字列1="あいう1え "
>文字列2=" かきくけ "
>と半角スペース的なものがはいってしまいます。
>バイトで区切っているので原因はわかりますが、
>スぺースでもないので、トリムもきかずどうしていいかわかりません
>
>このように不正の文字がでてしまった場合どうやって判断し
>どのような除去を入れればいいのでしょうか?
トリムとは、TRIM関数のことでしょうか?
また、VBAで処理する方法ですか?ワークシート関数で処理する方法ですか?
いずれにしても、
=TRIM(MIDB("文字列",1,10))
で10バイト目が、全角文字の1バイト目の場合は、除去されるようです。
VBAの場合ですと、以下のようなコードで除去されると思います。
イミディエイトウィンドウに結果が表示されますので、確認してみてください。
Sub Sample()
Dim ss1 As String
Dim ss2 As String
Dim ss3 As String
ss1 = "あいうえおかきくけこ"
ss2 = "あいう111おかきくけこ"
ss3 = "あいう1えおかきくけこ"
Debug.Print " 1234567890"
Debug.Print "1-1-1[" & MidB(ss1, 1, 10) & "]"
Debug.Print "1-2-1[" & MidB(ss1, 11, 10) & "]"
Debug.Print "2-1-1[" & MidB(ss2, 1, 10) & "]"
Debug.Print "2-1-2[" & StrConv(MidB(StrConv(ss2, vbFromUnicode), 1, 10), vbUnicode) & "]"
Debug.Print "2-1-3[" & Application.Trim(StrConv(MidB(StrConv(ss2, vbFromUnicode), 1, 10), vbUnicode)) & "]←除去されている"
Debug.Print "2-2-1[" & MidB(ss2, 11, 10) & "]"
Debug.Print "3-1-1[" & MidB(ss3, 1, 10) & "]"
Debug.Print "3-2-1[" & MidB(ss3, 11, 10) & "]"
End Sub
|
|