- ベストアンサー
「Ms-Excel」の関数「UボードのUのみを半角にしたい」についての質問
Uボード を ASC(A1) を使って変換するとボードまで半角になってしまいました。Uのみのを半角にする関数を教えてください。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 英数字だけの半角化は、結構需要があると思います。しかし、標準の操作、関数ではできないんです。 以下のコード(無駄が多くてお見苦しいのですが)は、以前私が作成した自作関数(EXCEL2000以上)です。 英数字のみを半角化します。オプションで半角化できる記号も半角化します。 使い方は、標準モジュールに貼り付けて使用します。そして、普通の関数のように、 =英数字半角化(A1,True,True) とセルに書きます。 '*************************************************************** ' カタカナを除く、英数字や記号の半角化関数 ' 引数:対象 文字列(複数セルを指定するとエラーになる) ' 引数:数字 数字半角化オプション(True / False) 規定値:True ' 引数:記号 記号半角化オプション(True / False) 規定値:False '*************************************************************** Function 英数字半角化(対象 As String, _ Optional 数字 As Boolean = True, _ Optional 記号 As Boolean = False) Dim BUF, MAK, NUM, ALB Dim i As Long '半角化対象文字定義 MAK = Split("!,#,$,%,&,',(,),*,+,-,.,/,:,;,<,=,>,?,@,[,\,],^,_,{,|,},。,、,,", ",") NUM = Split("1,2,3,4,5,6,7,8,9,0", ",") ALB = Split("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",") '大文字アルファベット置換 For i = 0 To UBound(ALB) 対象 = Replace(対象, ALB(i), StrConv(ALB(i), vbNarrow)) Next i '小文字アルファベット置換 For i = 0 To UBound(ALB) 対象 = Replace(対象, StrConv(ALB(i), vbLowerCase), StrConv(StrConv(ALB(i), vbLowerCase), vbNarrow)) Next i '数字置換 If 数字 Then For i = 0 To UBound(NUM) 対象 = Replace(対象, NUM(i), StrConv(NUM(i), vbNarrow)) Next i End If '記号置換 If 記号 Then For i = 0 To UBound(MAK) 対象 = Replace(対象, MAK(i), StrConv(MAK(i), vbNarrow)) Next i 対象 = Replace(対象, Chr(-32408), Chr(34)) ' ”の置換 End If 英数字半角化 = 対象 End Function
その他の回答 (2)
- dejiji-
- ベストアンサー率38% (327/858)
編集→置換で「U」のみ半角に置換では駄目ですか。 検索する文字列に全角のU、置換後の文字列に半角のU
- mshr1962
- ベストアンサー率39% (7417/18945)
=SUBSTITUTE(A1,"U","U") なら可能ですが、別のアルファベットには対応しません。 マクロを組むか、下記のようなフリーソフトをご利用ください。 http://www.forest.impress.co.jp/article/2004/02/19/luckystar.html http://www.vector.co.jp/soft/dl/win95/business/se275904.html
お礼
おぉーーーすごい!! ぜひ、使わせていただきます。 ありがとうございます!!!!!!!