プロが教えるわが家の防犯対策術!

いつもお世話になっております。
EXCELで、セル内の半角カナのみを削除する関数はございますでしょうか?

    A     B 
1  タナカ田中    田中
2  キノシタ木下   木下
3  オノ小野    小野

といった具合です。
よろしくお願いいたします。

A 回答 (2件)

こんにちは。



例えば、

半角カタカナ+全角 というようになっているのでしたら、

=MID(A1,MATCH(TRUE,INDEX(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>256,,),0),255)

このような数式で、削除することが可能です。(ただし、数字やアルファベットも含みます。それを、半角カタカナでくくることも可能ですが、数式が長くなりすぎます。)

しかし、それ以上に、半角カタカナと全角とが混在していたり、英数と混在していて、半角カタカナだけを削除するのは、上記のような数式ではうまくいきません。

その場合は、例えば、以下のようなユーザー定義関数を使うことになります。
'標準モジュール登録

Public Function DOBK(ByVal myStr As String) As String
'DelOneByteKana ->DOBK
Dim Re As Object, Matches As Object, Match As Object
Dim Buf As String
With CreateObject("VBScript.RegExp")
'厳密には、Unicodeの半角カタカナの範囲ですから、JISの\xA1~\xDFとは違っています。
  .Pattern = "[\uFF66-\uFF9F]"
  .Global = True
  Buf = myStr
  If .test(Buf) Then
    Set Matches = .Execute(Buf)
    For Each Match In Matches
      Buf = Replace(Buf, Match, "", , , vbBinaryCompare)
    Next
  End If
End With
  DOBK = Buf
End Function
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
一番最初の関数でできました!!
すごい!
助かりました!!

お礼日時:2008/03/08 14:24

一発でそういった処理のできる関数はないはずです。


力技にはなりますが、A列の文字列をmid関数を使って1文字ずつ取り出して、code関数で177~221(ひょっとしたら少し違うかも)だったら空白に(substitute関数を使って)置換し、それぞれを最後に結びつける方法は考えられます。スマートな方法ではありませんし、作業セルも結構使うことにはなりますが・・・
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
一発でできないことがわかっただけでも、助かりました!
根気良く、作業に取り掛かります!

お礼日時:2008/03/08 14:23

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

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


このQ&Aを見た人がよく見るQ&A