• ベストアンサー

セル内改行位置でセルを分割する方法

はじめまして よろしくお願いします。 エクセルで、ひとつのセル内に複数行に分けて入力してあるものを 行でそれぞれひとつのセルに分け直したい場合、 例えばA1のセルに  1234  aabbcc A2のセルに  12345  aaabbbccc  123 と入力してあるものを A1→1234 A2→aabbcc A3→12345 A4→aaabbbccc A5→123 としたいとき、何かいい方法ありますか。

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

  • ベストアンサー
  • yamada_28
  • ベストアンサー率43% (21/48)
回答No.1

1.A1のセルとA2のセルを選択してコピー 2.メモ帳などのエディタへ貼り付け 3."(ダブルコーテーション)がくっついているはずなので、置換えなどで"を削除する 4.編集したものを全部選択してコピー 5.エクセルへ貼り付け これでOK。ちょっと手間ですけど...

bmc11280219
質問者

お礼

できました!どうもありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 本来、横に区切るのでしたら、メニューのデータ-区切り位置 のダイアログを使います。 (良く使うようでしたら、ユーザー設定から、区切り位置ボタンをツールメニューに貼り付けておくと便利です。)その他のところの区切り文字に、「Ctrl + J 」で区切りをさせて、横に出しますが、縦の場合は、まあ、一般的は、VBAで行うのが一番かもしれませんね。すでに、VBAの回答も出ているようですが、まあ、ものは試しに! '<個人用マクロブックの標準モジュールに登録し-ユーザー設定のツールボタンに取り付けたるすると便利かも。簡易型でも一通りのエラー処理はしています。切り分けないときは、ただの値コピーになります。> Sub SplitCharTen() Dim c As Range Dim i As Long Dim ar() As Variant Dim buf As Variant Dim a As Variant Dim rng As Range If TypeName(Selection) <> "Range" Then _   MsgBox "最初に、切り分ける範囲をワークシート上で指定してください。", vbInformation: Exit Sub If WorksheetFunction.CountA(Selection) = 0 Then _   MsgBox "データのある場所を指定してください。", vbInformation: Exit Sub On Error Resume Next  Set rng = Application.InputBox("貼り付ける場所を指定してください。", , "$A$1", Type:=8) On Error GoTo 0  If rng Is Nothing Then Exit Sub   For Each c In Selection  If InStr(c.Value, vbLf) > 0 Then   buf = Split(c.Value, vbLf)   For Each a In buf   ReDim Preserve ar(i)   ar(i) = a   i = i + 1   Next a   Erase buf  Else   ReDim Preserve ar(i)   ar(i) = c.Value   i = i + 1  End If Next c  rng.Cells(1).Resize(UBound(ar()) - LBound(ar()) + 1).Value = _  WorksheetFunction.Transpose(ar()) End Sub

bmc11280219
質問者

お礼

どうもありがとうございました。今度やってみます。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

VBあですが、標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row K = 2 For i = 2 To d s = Split(Cells(i, "A"), Chr(10)) For j = 0 To UBound(s) Cells(K, "B") = s(j) K = K + 1 Next j Next End Sub を貼り付けて、実行してください。 例データ A列  結果B列 "12 22345" 12 "23 sdfg" 22345 "wer 12er 3457" 23 12er sdfg wer 12er 3457 12er A列A1,A2、・・・のデータをA1,A2、・・も含めて、A列に戻すのは、複雑になるので(配列などに、一旦覚えさせなければならない)分解したものを、B列にセットしてます。 関数では、2行、3行、4行などが混じると複雑になって、手に負えない。

bmc11280219
質問者

お礼

どうもありがとうございました。ちょっと私には難しそうですが時間のある時挑戦してみたいと思います。