アプリ版:「スタンプのみでお礼する」機能のリリースについて

Uボード

ASC(A1)
を使って変換するとボードまで半角になってしまいました。Uのみのを半角にする関数を教えてください。
宜しくお願い致します。

A 回答 (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
    • good
    • 1
この回答へのお礼

おぉーーーすごい!!
ぜひ、使わせていただきます。
ありがとうございます!!!!!!!

お礼日時:2004/11/26 19:28

編集→置換で「U」のみ半角に置換では駄目ですか。


検索する文字列に全角のU、置換後の文字列に半角のU
    • good
    • 0

=SUBSTITUTE(A1,"U","U")


なら可能ですが、別のアルファベットには対応しません。
マクロを組むか、下記のようなフリーソフトをご利用ください。
http://www.forest.impress.co.jp/article/2004/02/ …

http://www.vector.co.jp/soft/dl/win95/business/s …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています