• ベストアンサー

エクセルのセルの並べ替え

お世話になります。エクセル2007を使用しているのですが、手動でコピペではかなり面倒なことになったので質問させていただきます。 A1からA100のセルに数値のデータが入っているとして、 A1~A100のデータを順に4つづつA1,A2,A3,A4、次は隣の列にいってB1,B2,B3,B4そしてまた次の列にいってC1,C2,C3,C4・・と 最終的に4行25列に並べ替えたいのですが、楽に並べ替える手法はあるでしょうか。 この作業を何回も繰り返さないといけないので、やり方がわかる方どうか教えて下さい。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.1

A1からA4はそのまま、ということでよろしいでしょうか?  B1:=INDEX($A$1:$A$100,4*(COLUMN()-1)+ROW()) として、右方・下方にフィル⇒コピー⇒値のみ貼り付け でいかがでしょう? (Excel2003で挙動確認済)  B1:=OFFSET($A$1,4*(COLUMN()-1)+ROW()-1,) としても同じです。

hososugi
質問者

お礼

回答有難うございます。 B1:=INDEX($A$1:$A$100,4*(COLUMN()-1)+ROW())は何故かうまくいかなかったのですが、 B1:=OFFSET($A$1,4*(COLUMN()-1)+ROW()-1,) で実現できました。 本当に有難うございました。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

次の方法は如何でしょか。 B1に次の数式を設定し、B4までコピー後、B1:B4を選択して、右方向に必要分コピーして下さい。 =INDIRECT("a"&4*(COLUMN()-1)+ROW())

hososugi
質問者

お礼

回答有難うございます。 この方法でも実現できそうです。 有難うございました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

VBAで作ってみました。 一例です。 意味不明であれば無視してください。 Sub test()  Dim i As Long, c As Long, r As Long  Dim Member As Long, LastRow As Long  Dim Buf As Variant    Member = 4 '分割する要素の数    LastRow = Cells(Rows.Count, "A").End(xlUp).Row  If LastRow Mod Member <> 0 Then LastRow = (Int(LastRow / Member) + 1) * Member    If LastRow > Columns.Count * Member Then Exit Sub    Buf = Range("A1:A" & LastRow).Value    i = 1  Application.ScreenUpdating = False  Cells.Clear  For c = 1 To LastRow / Member   For r = 1 To Member    Cells(r, c).Value = Buf(i, 1)    i = i + 1   Next r  Next c  Application.ScreenUpdating = True   End Sub

hososugi
質問者

お礼

VBAですか。。 申し訳ないですが意味不明です^^; CとかC++ならそこそこ分かるんですが、 情けないですね

関連するQ&A