あなたの習慣について教えてください!!

エクセルで一列に並んだデータを数行ごとに改行して複数列にしたいです。










。。。

となっているのを、

1 4 7
2 5 8 
3 6 9

といったふうにしたいです。
データの数がとんでもないのでマクロを組みたいのですが、なかなかできません。
お助け願います。。。

質問者からの補足コメント

  • データの総数は44640あり、それを1440個ずつ改行したいです。

      補足日時:2019/12/22 17:26
  • すみません、1440が正しいです。

    No.4の回答に寄せられた補足コメントです。 補足日時:2019/12/22 23:32
  • 全てA列にあります。

    No.3の回答に寄せられた補足コメントです。 補足日時:2019/12/22 23:33

A 回答 (10件)

標準モジュールに貼り付けて実行します。



下記をデータ位置に応じて修正ください。日本語で説明を付けた行です。
row_start ⇒ データ開始行(例:B1セルなら1)
col_start ⇒ データ開始列(例:B1セルなら2)
row_number ⇒ 改行する個数(例:1440)
 

Sub Macro1()
  Dim row_start As Single
  Dim row_end As Single
  Dim col_start As Single
  Dim row_number As Single
  Dim i As Single
  Dim cycle As Single

  row_start = 1  'データ開始行(例:B1セルなら1)
  col_start = 2   'データ開始列(例:B1セルなら2)
  row_number = 1440  '改行する個数(例:1440)
 
  row_end = Cells(Rows.Count, col_start).End(xlUp).row
  cycle = Int((row_end * -1) / row_number) * -1
 
  For i = 1 To cycle
   Range(Cells(row_start + i * row_number, col_start), Cells(row_start + (i + 1) * row_number - 1, col_start)).Cut Cells(1, col_start + i)
  Next i
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2019/12/27 19:54

》 お助け願います。

。。
と懇願しておいて、2019/12/22 23:33 以降は何のコメントもないのは何故ッ!
    • good
    • 1

こんにちは



単純な規則なので関数でもできるのに、ご自身でうまく利用できないというマクロで試みる意味がわかりませんが・・・

Sub Sample()
With Worksheets("Sheet2").Cells(1, 1).Resize(1440, 31)
 .FormulaLocal = "=INDEX(Sheet1!$A:$A,COLUMN()*1440+ROW()-1440)&"""""
 .Value = .Value
End With
End Sub
    • good
    • 0

式 =OFFSET(Sheet1!$A$1,MOD((ROW(A1)-1),3)+INT((ROW(A1)-1)/3)*480+(COLUMN(A1)-1)*3,)


を入力した Sheet2 のセル A1 を[コピー]して、それを範囲 A1:RL273 に[貼り付け]てのは駄目ですか?

【独白】もし、ソレでOKなら、なぜマクロに固執するか理解できません。
    • good
    • 0

「1440個ずつ改行」の意味が理解できません。


「といったふうにしたい」として例示された3列3行のデータは“何個ずつ改行”したことになるのですか?
    • good
    • 0

回答しようと思いましたが、既にNo5の方から正解がでているので回答は控えます。

    • good
    • 0

>全部で44640あります。


>それを、1442ごとに改行したいです。

>データの総数は44640あり、それを1440個ずつ改行したいです。

1442と1440のどちらが、正しいのでしょうか。
この回答への補足あり
    • good
    • 0

列はA列にあるのですか?(A1からA44640)

この回答への補足あり
    • good
    • 1

行数が微妙なので適当に「1400」「1399」を直してください。



Sub Sample()

Dim 終 As Long
Dim 列 As Long
Dim 行 As Long

 列 = 1
 行 = 1400
 終 = Cells(Rows.Count, 1).End(xlUp).Row
 Do While 終 = Cells(Rows.Count, 1).End(xlUp).Row
  列 = 列 + 1
  Range(Cells(行, 1), Cells(行 + 1399, 1)).Cut Cells(1, 列)
  行 = 行 + 1400
 Loop

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
やってみます!

お礼日時:2019/12/22 23:34

>マクロを組みたい


あなたの組んだマクロを出してくれれば助言できます
それなしでは 条件が大雑把すぎて 「回答」の域を超えます。
(世の中には そういうマクロを作るのを仕事にしている人もいるのです)

せめて 最大 データがいくつあって いくつで改行したいか くらいは言ってください
    • good
    • 0
この回答へのお礼

説明足らずで申し訳ございません。

全部で44640あります。
それを、1442ごとに改行したいです。

お礼日時:2019/12/22 17:10

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報