• ベストアンサー

エクセルの複数列データを一列に並び変える方法につい

エクセルでA1~D4のデータをA10~D13に、F1~I6をA14~D19に、L1~O3をA20~D23に並べる方法を教えてください。 1列毎のデータ並び変えはネットにありますが、複数列データを並び変えるのが見つかりません。 よろしくお願いします。

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

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

1.下記の式を入力したセル A10 を右に3列オートフィルした後で、  ̄ ̄セル E10 に式 =SUM(A10:D10)/SUM(A10:D10) を入力  ̄ ̄=OFFSET($A$1,MOD(ROW(A1)-1,5),COLUMN(A1)-1+INT((ROW(A1)-1)/5)*5) 2.範囲 A10:E10 を下方にズズーッと(E列に #DIV/0! が連続するまで)  ̄ ̄オートフィル ⇒ そのままの状態で Ctrl+A ⇒ Ctrl+C 3.データを含む範囲内の任意のセルを選択 ⇒ Ctrl+A ⇒ [値の貼り  ̄ ̄付け]を実行 ⇒ Ctrl+G ⇒ [セル選択] ⇒ “定数”に目玉入れ、かつ、  ̄ ̄“エラー値”以外のチェック外し ⇒ [OK] ⇒ 選択された任意のセル  ̄ ̄上でマウスの右クリック ⇒ [削除] ⇒ “行全体”に目玉入れ ⇒ [OK]  ̄ ̄⇒ E列全体を選択 ⇒ Deleteをパシーッ

その他の回答 (5)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.6

>エクセルでA1~D4のデータをA10~D13に、F1~I6をA14~D19に、L1~O3をA20~D23に並べる方法を教えてください。 提示の画像ではL1~O3をA20~D23ではなくK1~N3をA20~D22のようです。 画像の方が正しいと解釈します。 A10セルへ次の数式を設定して右へD10までコピーし、A10:D10を下へ必要数コピーします。 =IFERROR(SMALL($A$1:$N$9,COLUMNS($A$10:A10)+(ROWS($A$10:A10)-1)*4),"") 添付画像はExcel 2013で検証した結果です。 尚、A1:N9の範囲で空欄は未入力セルで数値の入力は値の小さい順にキーボードから入力されています。

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

これはVBA向きの課題だと思う。 すでにVBAでの回答も出ていますが、「コード行数を少なくする」ことを目指して、やってみた。 ーー 標準モジュールに Sub test01() k = 30 '結果を30行目から書き出しと仮定 For Each c In Array(1, 6, 11) 'A,F,K列(から4列)について lr = Cells(100000, c).End(xlUp).Row '最下データ行を察知 For r = 1 To lr '各ブロックの1行からlr行までについて For j = 1 To 4 '各ブロックは4列なので横方向に4回繰り返し Cells(k, j) = Cells(r, c + j - 1) Next j k = k + 1 '次は1行下へ書き出し Next r Next End Sub 結果 A30から下へ(多少、質問データと異なるかも) 1 2 3 4 4 5 6 7 8 9 10 11 12 13 14 15 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 100 101 102 103 104 105 106 107 108 109 110 111

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.3

現在の位置で行の範囲が可変だとしたら (A-DはA10より上にある) Sub Example() Dim i As Long Application.ScreenUpdating = False For i = Columns("A").Column To Columns("K").Column Step 5 Range(Cells(1, i), Cells(1, i + 3).End(xlDown)).Copy If Cells(10, "A").Value = "" Then Cells(10, "A").PasteSpecial Else Cells(10, "A").End(xlDown).Offset(1, 0).PasteSpecial End If Next Application.ScreenUpdating = True End Sub

  • molly1978
  • ベストアンサー率33% (393/1186)
回答No.2

今一つ質問の意図が理解できません。「1列毎のデータ並び変え」というのが何なのかもわかりません。単に一つの表にまとめるだけなら下記です。 A1~D4のセルを選択して切り取り、A10セルを選択して貼り付ける。F1~I6のセルを選択して切り取り、A10セルを選択して貼り付ける。L1~O3も同様。 あるいは、A1~D4セルを選択後、ドラッグしてA10までもっていく。他のセルも同様。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>、複数列データを並び変えるのが見つかりません。 そのまんまコピーしているのでは Sub Test()   Range("A1:D4").Copy Range("A10")   Range("F1:I6").Copy Range("A14")   Range("K1:N3").Copy Range("A20") End Sub

関連するQ&A