• ベストアンサー

エクセルで行を越えての貼り付け

X1~X100に数値が入っていて これを5列で1行おきとか2行おきとかに 並べ替えたいのですがアドバイスお願いいたします データーが100くらいなら良いのですが もっと多いので簡単な方法をアドバイスください X1~X100に数値 A1~E1に X1~X5 A1=X1 B1=X2 C1=X3 D1=X4 E1=X5 A5~G5に X6~X10 A5=X6 B5=X7 C5=X8 D5=X9 E5=X10 と言う風にしたい A1:E1をコピーして間に3行挟んでA5:E5に貼り付け するとデーターが A5~G5に X5~X9とずれてしまいます 4行挟んでコピーすれば正しく貼り付けますが 1行挟んでも2行挟んでも3行挟んでも 何行挟んでも良いようにするには どうすれば良いでしょうか よろしくお願いいたします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 仮にW1に1行置きなら「1」、2行置きなら「2」と間を空ける行数を入力しておくとします。 A1に、 =IF(MOD(ROW(),$W$1+1)=1,INDEX($X:$X,MOD(COLUMN()-1,5)+1+((ROW()-1)/($W$1+1))*5),"") と入力して、E1までコピー さらに、A1:E1を下の行へコピーします。 これで、W1の数値を変えると、それにしたがってA~E列も変化します。

kei3999
質問者

お礼

御礼が遅くなりました。 これを機会にエクセルを勉強いたしました。 おかげさまで解決いたしました。 ありがとうございました。

その他の回答 (3)

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

関数式の解は名人芸になるようです。 VBAなら普通に記述するだけで出来ます。 ツール-マクロ-VBE-挿入-標準モジュールにコピペして F5で実行。 Cells(j,k)はj行k列のセルの値を示します。 Sub test03() k = 1: j = 1 For i = 1 To 100 Cells(j, k) = Cells(i, "X") k = k + 1 If k = 6 Then j = j + 4 k = 1 End If Next i End Sub ロジックは スタートをA1にする(k = 1: j = 1) X列の一行から100行まで(For i = 1 To 100)についてx列のi行をCells(j,k)に持ってくる。 持ってきたら次は同行次列へ持ってくる用意をする。 (k = k + 1) しかし次列が第6列(F列)になったら、(If k = 6 Then )A列に戻し、行を4行下へ空けたA列をポイントする。(j = j + 4 k = 1) (テストデータ)X1:X100に1から100を入れる。 オートフィルを利用できる。 (結果) A1:E1 1-5 A5:E5 6-10 A9:E9 11-15 A13:E13 16-20 ・・・

kei3999
質問者

お礼

お礼が遅くなりました。 大変参考になりました、ありがとうございます。

  • cazum
  • ベストアンサー率22% (2/9)
回答No.2

1.行を挟まずに表を作成。 2.その左に1,6,11,16...と数字を入れる 3.表が終わったら2,7,...、3,8,...と補完し 4.ソート ではダメですか?

kei3999
質問者

お礼

おかげさまで解決いたしました。 ありがとうございました。

noname#9284
noname#9284
回答No.1

もっと多いと思いますが、X列の行を仮に100行とします。 3行はさむ場合(4行ごと) Y1に =INDEX($X$1:$X$100,(COLUMN()-24),1) と入力してこれをACまでドラッグしてコピーし、 この5つのセルを必要な分だけ下までコピーします。 適当に。 エラー処理をしていませんので「#REF!」が出たらそのセルは削除します。 この四角い範囲をコピーし、別なシートのA1から形式を選択して値だけ張り付けます。 そのシートのG1に =IF(MOD(ROW(),4)<>1,"",INDIRECT(ADDRESS(ROW()/4+1,COLUMN()-6))) と入力し、右や下にコピーします。 もし2行はさむのでしたら(3行ごと) =IF(MOD(ROW(),3)<>1,"",INDIRECT(ADDRESS(ROW()/3+1,COLUMN()-6))) 1行はさむのでしたら(2行ごと) =IF(MOD(ROW(),2)<>1,"",INDIRECT(ADDRESS(ROW()/2+1,COLUMN()-6))) にします。 出た結果をコピーし、元のシートのA1から形式を選択して貼り付けで値のみ貼り付けます。

kei3999
質問者

お礼

ありがとうございました 御礼が遅れてすみません。 参考になりました。 おかげさまで解決いたしました。

関連するQ&A

専門家に質問してみよう