- ベストアンサー
Excelで2バイト文字の前に半角スペース一括挿入
いつもありがとうございます。 A列に下記のような 「半角英数」+「漢字(orひらがな・全角記号)」のデータが数百個あります。 abc漢字あああ 2zzあああ qrs5s~(ああ) 以下省略 半角英数と全角文字の間に半角スペースを一括挿入したいのですが、 どのようにすれば可能でしょうか。 (例えば "abc漢字あああ" を "abc 漢字あああ" に変換 "2zzあああ" を "2zz あああ" に変換 "qrs5s~(ああ)" を "qrs5s ~(ああ)" ※"~"の前に半角スペース に変換) お知恵拝借できれば幸いですm(_ _)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ? 最初の方のSet r = Range("A1")のA1はA列でデータの始まる行にセットしてください。データが連続して入っている範囲を処理します。 Sub main() Set r = Range("A1") Do k = 0 Do k = k + 1 If k > Len(r) Then Exit Do j = Asc(Mid(r.Value, k, 1)) Loop While j > 0 r.Offset(, 1) = Mid(r.Value, 1, k - 1) & " " & Mid(r.Value, k, Len(r)) Set r = r.Offset(1) Loop While Not IsEmpty(r) End Sub
その他の回答 (3)
- bunjii
- ベストアンサー率43% (3589/8249)
>半角英数と全角文字の間に半角スペースを一括挿入したいのですが、どのようにすれば可能でしょうか。 作業列を使うことが許されるなら次のような方法で可能になります。 C列を作業列として C1=SUMPRODUCT(N(CODE(MID(A1,COLUMN(OFFSET(A$1,0,0,1,LEN(A1))),1))<256)) B列へ目的の結果を代入します。 B1=LEFT(A1,C1)&" "&MID(A1,C1+1,LEN(A1)) B1:C1を選択して下へ必要数コピーすれば目的通りになるでしょう。 尚、作業列を使えない場合はC1の数式をB1で参照しているC1と入れ替えれば同じ結果を得られます。
- msMike
- ベストアンサー率20% (364/1804)
=REPLACE(A1,MATCH(TRUE,CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=8000,0),," ") 【お断り】上式は必ず配列数式として入力すること
お礼
教えて頂きありがとうございました。私のレベルですと教えて頂いた式をどう使うのか分かりませんでした。式がシンプルで強力そうだったので興味があったのですが・・・申し訳ありません。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Excelは触ったこともない70の爺が挑戦してみた。半角と全角とを区別するのにlenH()を使ってみた。一応、《全角→半角→全角》の並びの存在にも対応している。なお、以下の関数を利用して一括変換する術は承知として割愛。て言うか、Excelは触ったこともないのでお任せ。 Public Function InsertSpace(ByVal strText As String) As String Dim isChange As Boolean Dim I As Integer Dim L As Integer Dim C As String * 1 Dim strNew As String L = Len(strText) C = Left(strText, 1) strNew = C For I = 2 To L isChange = LenH(C) <> LenH(Mid(strText, I, 1)) C = Mid(strText, I) If isChange Then strNew = strNew & "_" End If strNew = strNew & C Next I InsertSpace = strNew End Function Public Function LenH(ByVal Text As String) As Integer LenH = LenB(StrConv(Text, vbFromUnicode)) End Function
お礼
丁寧に教えて頂きありがとうございましたm(_ _)m
お礼
時間を割いて教えて頂きありがとうございます。やってみたのですが、教えて頂いた式をどう使うのか分からず動作確認できませんでした。申し訳ないです。でも本当にありがとうございましたm(_ _)m