- 締切済み
セル内における改行文の修正
エクセルの表があり(改行されています) 1セル内が↓このようになっていて (1)あいうえお かきくけこ (2)さしすせそ (3)たちつてと なにぬねのはひふへほ これを ↓ (1)あいうえお かきくけこ (2)さしすせそ (3)たちつてと なにぬねのはひふへほ という風に (1)(2)(3)を揃え、以下を一文字下げて頭を揃えたいのですが、量が多いので手作業で一つ一つ直すのではなく 一発で修正できるやり方はあるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。もしセル内の改行がALT+ENTERだけの場合は A列に文字列があると仮定して Sub test021() For i = 1 To 100 '100行までの場合 x = Cells(i, "A") 'A列 s = 1 '---- p01: p = InStr(s, x, Chr(10)) If p = 0 Then GoTo p02 If Mid(x, p + 1, 1) = "(" Then s = p + 1 Else x = Mid(x, 1, p) & " " & Mid(x, p + 1, Len(x) - p) s = p + 3 End If GoTo p01 '--- p02: Cells(i, "A") = x Next i End Sub で()以外の行は、見た目では、2文字下がったように見えます。 折り返して全体を表示するに設定されていても、列幅を十分広く取れば 、それを設定してないようになって、ALT+ENTERでの改行だけが、効いてきます。その場合は、上記が役立つでしょう。
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。 質問を誤解していたようで、すみません。 ただし、「折り返して全体を表示する」では折り返しの箇所にデータとしては何もはいってなくて、(ALT+ENTERの場合と違いはここ)エクセル側でやっているので、ユーザー側で捕まえようがない。 あえて考えると、文字数を考え、()がない(見た目の)行は、1・2字スペースをプログラムで入れるくらいだと思う。質問者の実物例が使えないので、コードを作りようがない。 「折り返して全体を表示」になっているとしても、()の前で、推定ではユーザー(データ入力者)側で、ALT+ENTERで改行しているように思う。 でないとエクセルの折り返しに任せたら、全て()が行頭にそろうはずがまずありえない。
- imogasi
- ベストアンサー率27% (4737/17069)
1つのセルA1に 東京都 新宿区 四谷3丁目 と見える風に文字列が入っているとする。 VBEの標準モジュールに Sub test01() x = Range("A1") MsgBox x j = 1 s = 1 p01: p = InStr(s, x, Chr(10)) If p = 0 Then GoTo p02 MsgBox p st = st & "(" & j & ")" & Mid(x, s, p - s + 1) j = j + 1 s = p + 1 GoTo p01 p02: st = st & "(" & j & ")" & Mid(x, s, Len(x) - s + 1) MsgBox st End Sub を実行すると、B1セルに (1)東京都 (2)新宿区 (3)四谷3丁目 と入ります。 要点は、改行箇所に、Chr(10)という文字コード10の「改行」が はいっているということです。これで改行される 位置を割り出せます。しかし質問では (1)(2)・・を振ってない、改行の先頭もあり どういう基準で振らないのか判りません。 これがプログラムに組めないと、本質問は不可能です。 全角の番号を振るなら Sub test01() x = Range("A1") MsgBox x j = 1 s = 1 p01: p = InStr(s, x, Chr(10)) If p = 0 Then GoTo p02 MsgBox p bng = StrConv(j, vbWide) St = St & "(" & bng & ")" & Mid(x, s, p - s + 1) j = j + 1 s = p + 1 GoTo p01 p02: bng = StrConv(j, vbWide) St = St & "(" & bng & ")" & Mid(x, s, Len(x) - s + 1) MsgBox St Range("C1") = St End Sub
補足
1つのセルに対して複数箇条書きがあります(もともと(1)(2)(3)は入っています) 例) (1)あいうえおかきくけこさしすせそ (2)たちつてとなにぬねのはひふへほ (3)まみむめもやゆよ セル設定が折り返しにして表示になっているため(セルの幅が決まっている表になっています) (1)あいうえおかきく けこさしすせそ (2)たちつてとなにぬ ねのはひふへほ (3)まみむめもやゆよ こんな感じになっています これを (1)あいうえおかきく けこさしすせそ (2)たちつてとなにぬ ねのはひふへほ (3)まみむめもやゆよ という具合に、(1)(2)(3)だけ頭を揃えて、折り返した次の行の頭をひとつ下げたいのです 量が膨大のため、これを一発で修正するのは不可能なのでしょうか?
お礼
解決しました。ありがとうございました。