- ベストアンサー
エクセルで、【スペース除き】【半角⇒全角へ】
タイトルの件、質問します。 A1セルに、下記のように、全角と半角の文字数字及び、スペースが入っています。 これを ・全角のみ ・半角文字、半角スペース 削除 を出来ないでしょうか? あいうえお12345 アイウエオ 12345
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
えーと・・・セルの内容を ・全角のみ「残す」 ・半角文字、半角スペース「は」削除 と日本語的に補助しても良いのでしょうか? 例) あいうえお12345 アイウエオ 12345 ↓ あいうえお12345 アイウエオ (「(半角スペース)12345」は半角だから削除 全角のスペース(「5」と「ア」の間は全角だから残す) という具合でしょうか。 だとすると、JIS関数(半角→全角へ変換)などのワークシート関数のみ、 あるいはエクセルの基本機能だけではおそらく難しいでしょう。 可能性があるとしたら、SUBSTITUTE関数で(強引に)置き換えるやり方。 =SUBSTITUTE(SUBSTITUTE(文字列,"a",""),"b","")・・・ と、文字数分連ねてやる感じです。 正直、置き換える文字の種類が多いので (数字だけで10、英アルファベットで26×2、カタカナが・・・スペースが・・) その分だけSUBSTITUTEを重ねるか?という観点から実用的では決して無いです。 マクロを使えばなんとなくは出来そうですが・・ <元のセルに「書き換える」やり方> Sub sample() Dim i As Long Dim myStr As String myStr = "" For i = 1 To Len(Range("A1")) If Asc(Mid(Range("A1"), i, 1)) < 0 Then mystr = mystr & Mid(Range("A1"), i, 1) End If Next Range("A1") = mystr End Sub これを適当なモジュールに貼り、走らせます。 元のセル(A1)の中身を書き換えますので、走らせる前に保存必須です。 <ユーザー定義関数を使うやり方> Function DelNarrow(myStr As String) As String Dim i As Long Dim Temp As String Temp = "" For i = 1 To Len(Range("A1")) If Asc(Mid(Range("A1"), i, 1)) < 0 Then Temp = Temp & Mid(Range("A1"), i, 1) End If Next DelNarrow = Temp End Function これを標準モジュールに貼り付けると、普通の関数のようにワークシートで使えます。 例えば、元の文字列がA1セルにあるとしたら、 B1セル:=DelNarrow(A1) としてやると、半角文字だけを削除した文字列が返ってきます。 コードとしては急ごしらえでお粗末ですが、とりあえず参考まで。
その他の回答 (3)
[No.2補足]へのコメント、 案の定、条件が変わりましたね。 今回提示された2行を文字通りに解釈すれば、 「あいうえお12345 アイウエオ 12345」 は 「あいうえお12345 アイウエオ12345」 にすることになるけど、その通りですか? ひょっとして、半角スペースも全角にしたいのとチャイますか?
》 ・全角のみ 》 ・半角文字、半角スペース 削除 を文字通りに解釈すれば 「あいうえお12345 アイウエオ 12345」 は 「あいうえお12345 アイウエオ」 にすることになるけど、その通りですか?(全角スペースは削除しない!) 後で「そうではなくて、…」とならないために確認しています。
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようにします。 =JIS(A1)
補足
半角文字⇒全角へ変更 半角スペース 削除 です。 宜しくお願いします。