プロが教える店舗&オフィスのセキュリティ対策術

http://okwave.jp/qa4369634.html?ans_count_asc=20

で質問をして、何度かやりとりをさせていただいて

エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。
縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。

それぞれのセル内のデータを…
例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。
かつ、B・Cセルは増えたセルにそれぞれのデータをコピーしたいと言ったら、

Sub Macro1()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim rng As Range
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("A65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "A"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "A").Value, Chr(10))
      Set rng = Cells(idx, "B")
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wkStr(cnt)
        Cells(idx, "B").Value = rng.Value
        Cells(idx, "C").Value = rng.Offset(0, 1).Value
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 3).Insert shift:=xlDown
        End If
      Next cnt
    End If
  Next idx
End Sub

といったマクロのご回答をいただきました。

これを元に、

・データが入っているセルをA列→B列に変更
・A列のデータはセルが増えた分だけ増やしたい
・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい

と変更したいのですが…。

すいませんが、宜しくお願い致します。

A 回答 (1件)

これでどうでしょう。


でも
>・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい
はよく理解できまていません。とりあえず空白セルを挿入するようにしました

Sub Macro3()
Dim idx, cnt As Integer
Dim wkStr() As String
Dim wk
  ActiveSheet.Copy after:=ActiveSheet
  For idx = Range("B65536").End(xlUp).Row To 1 Step -1
    If InStr(Cells(idx, "B"), Chr(10)) > 0 Then
      wkStr = Split(Cells(idx, "B").Value, Chr(10))
      wk = Cells(idx, "A").Value
      For cnt = UBound(wkStr) To 0 Step -1
        Cells(idx, "A").Value = wk
        Cells(idx, "B").Value = wkStr(cnt)
        If cnt > 0 Then
          Cells(idx, "A").Resize(1, 2).Insert shift:=xlDown
        End If
      Next cnt
      Cells(idx + 1, "C").Resize(UBound(wkStr), 2).Insert shift:=xlDown
    End If
  Next idx
End Sub
    • good
    • 0
この回答へのお礼

たびたびありがとうございました!
本当に感謝してもしきれません。
解決できました。
ありがとうございました!!!

お礼日時:2008/10/03 15:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!