• ベストアンサー

Excelで2バイト文字の前に半角スペース一括挿入

いつもありがとうございます。 A列に下記のような 「半角英数」+「漢字(orひらがな・全角記号)」のデータが数百個あります。 abc漢字あああ 2zzあああ qrs5s~(ああ) 以下省略 半角英数と全角文字の間に半角スペースを一括挿入したいのですが、 どのようにすれば可能でしょうか。 (例えば "abc漢字あああ" を "abc 漢字あああ" に変換 "2zzあああ"   を "2zz あああ" に変換 "qrs5s~(ああ)" を "qrs5s ~(ああ)" ※"~"の前に半角スペース に変換) お知恵拝借できれば幸いですm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

こんな感じ? 最初の方の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)
回答No.4

>半角英数と全角文字の間に半角スペースを一括挿入したいのですが、どのようにすれば可能でしょうか。 作業列を使うことが許されるなら次のような方法で可能になります。 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と入れ替えれば同じ結果を得られます。

bloom08
質問者

お礼

時間を割いて教えて頂きありがとうございます。やってみたのですが、教えて頂いた式をどう使うのか分からず動作確認できませんでした。申し訳ないです。でも本当にありがとうございましたm(_ _)m

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

=REPLACE(A1,MATCH(TRUE,CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=8000,0),," ") 【お断り】上式は必ず配列数式として入力すること

bloom08
質問者

お礼

教えて頂きありがとうございました。私のレベルですと教えて頂いた式をどう使うのか分かりませんでした。式がシンプルで強力そうだったので興味があったのですが・・・申し訳ありません。

回答No.2

 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

bloom08
質問者

お礼

丁寧に教えて頂きありがとうございましたm(_ _)m

関連するQ&A