セルにはカタカナ、数字、漢字、文字がすべて混在しています。
カタカナは全角に、カタカナ以外(数字や記号)は半角に統一しようかと思っています。
一度すべてを半角にし、カタカナだけ全角に戻そうかと考えました。
Sub test()
Dim e As Range
Dim f As Integer
Dim rData As Variant, ansData As Variant
Range("A1:A10").Select
For Each e In Selection
ansData = ""
For f = 1 To Len(e.Value)
rData = StrConv(e.Value, vbNarrow)
If Mid(rData, f, 1) Like "[ア-ン]" Then
ansData = ansData & StrConv(Mid(rData, f, 1), vbWide)
Else
ansData = ansData & Mid(rData, f, 1)
End If
Next f
e.Value = ansData
Next e
End Sub
しかしこれでは、
「ッ」「ァ」など小さい文字や、「ー(長音)」が半角から全角に戻りません。
また、「ズ」など濁音が「ス゛」と2文字になってしまいます。
これらの正しく変換されないものをすべて列挙し、Replaceなどを使って修正するしかないのでしょうか?
実は最初に、すべてを「全角→半角」にするようマクロ作成したのですが、半角にする文字をReplaceですべて列挙しるのは大変だと思い、「半角→全角」にしたらうまくいくかと思ったのですが、それでもうまくいきませんでした・・・
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
> また、「ズ」など濁音が「ス゛」と2文字になって
そりゃもちろん・・半角変換後に「一文字ずつ全角に変換」していますから、
濁点や半濁点も「1文字」として全角に変換しちゃいますよね。
じゃぁどうしましょう?ということで、
逆の手順で考えてみると上手くいくかも?
Sub test()
Dim e As Range
Dim f As Integer
Dim rData As Variant, ansData As Variant
Range("A1:A10").Select
For Each e In Selection
ansData = ""
rData = StrConv(e.Value, vbWide)
For f = 1 To Len(rData)
If Asc(Mid(rData, f, 1)) < -32097 Then
ansData = ansData & StrConv(Mid(rData, f, 1), vbNarrow)
Else
ansData = ansData & Mid(rData, f, 1)
End If
Next f
e.Value = ansData
Next e
End Sub
さぁ、何を逆に考えたでしょう(笑)。
簡単に解説してみると、
・すべて全角に変換
・一文字ずつ取り出しながら
・Ascで変換した文字コードが「-32097=“ぁ”」より小さかったら
・半角に(出来るものは)変換
・それ以外は
・そのまま
・文字列長分繰り返し
・セルに戻す
という作業です。
文字コードに関しては以下でご確認ください。
http://charset.7jp.net/jis.html
“日本語”で最初に出てくる文字は「ぁ」で、
そのコードを10進数に変換したのが「-32097」です。
上記ではこの「-32097」より小さい数字は「日本語以外=半角に変換」としています。
ちなみに・・StrConv(Narrow)では「半角にできない記号」は無視されますので、
日本語より先に出てくる「数学記号や矢印」などは考慮しなくて大丈夫と思われます。
参考までにどうぞ。
文字コードを利用する方法は思いつきませんでした。
これで、半角にしたいものに対応できそうですね。
助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) 【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい 4 2022/08/31 11:05
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
EXCELの文字列操作で文字数不足...
-
EXCELで、セル内の半角カ...
-
℃の半角表示
-
半角の『°(単位の度)』
-
契約書や 公文書・私文書などに...
-
EXCEL95 VLOOKUP関数で半角と全角
-
【VBA】ファイルパスに半角スペ...
-
メールアドレスの上ハイフン入...
-
半角スペース
-
関数を使わずに一括で全角を半...
-
半角の×(かける)は?
-
エクセル関数で文字列の中のス...
-
Excel 文字列の中から数字だけ...
-
エクセルでひらがな・漢字はそ...
-
Excel2016 検索の窓を常時表示...
-
ギリシャ文字 μの出し方
-
エクセルで、JIS関数、ASC関数...
-
エクセルで 全角の空白を含む...
-
エクセルでセルの連結の逆
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
半角の『°(単位の度)』
-
メールアドレスの上ハイフン入...
-
半角の×(かける)は?
-
契約書や 公文書・私文書などに...
-
関数を使わずに一括で全角を半...
-
EXCELの文字列操作で文字数不足...
-
EXCEL95 VLOOKUP関数で半角と全角
-
半角スペース
-
EXCELで、セル内の半角カ...
-
℃の半角表示
-
エクセル関数で文字列の中のス...
-
【VBA】ファイルパスに半角スペ...
-
ビジネスの文書における、数字...
-
Excel2016 検索の窓を常時表示...
-
1, (1),(1)の使い分け
-
エクセルでひらがな・漢字はそ...
-
お名前(姓)」には「カタカナ(...
-
ギリシャ文字 μの出し方
-
隅付き括弧に半角はありますか...
おすすめ情報