こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2019-06-14 09:26:25

QNo.9625687

困ってます

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

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をパシーッ

投稿日時 - 2019-06-14 12:59:34

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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の範囲で空欄は未入力セルで数値の入力は値の小さい順にキーボードから入力されています。

投稿日時 - 2019-06-15 17:02:37

ANo.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から下へ(多少、質問データと異なるかも)
1234
4567
891011
12131415
50515253
54555657
58596061
62636465
66676869
70717273
100101102103
104105106107
108109110111

投稿日時 - 2019-06-14 22:50:26

ANo.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

投稿日時 - 2019-06-14 12:43:29

ANo.2

今一つ質問の意図が理解できません。「1列毎のデータ並び変え」というのが何なのかもわかりません。単に一つの表にまとめるだけなら下記です。

A1~D4のセルを選択して切り取り、A10セルを選択して貼り付ける。F1~I6のセルを選択して切り取り、A10セルを選択して貼り付ける。L1~O3も同様。
あるいは、A1~D4セルを選択後、ドラッグしてA10までもっていく。他のセルも同様。

投稿日時 - 2019-06-14 10:58:21

ANo.1

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

投稿日時 - 2019-06-14 09:44:59

あなたにオススメの質問