• ベストアンサー

エクセル2007 A列多数セルを50行ごとに区切る

A列にひたすら数字のセルがあります。これを50セルごとに区切って、B列、C列、D列・・・・・に50行ごとに割り振っていきたいのですが、こんなことを出来る関数はありますか? 複数列を1列にする関数は聞いたことがあるのですが、1列を複数列にする関数は聞いた事がありません。どうか教えてください。 こんな風にしたいというイメージ画像を添付します。よろしくお願いします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 もし、A列の数値が1行目から始まっているのではない場合や、B列、C列、D列・・・・・に数字を表示させる行が1行目からではない場合には、以下の様にして下さい。  例えば仮に、A列の数値がA2セルから始まっていて、B列、C列、D列・・・・・に数字が表示させる行が3行目から始まっているものとした場合、まずはB3セルに次の関数を入力して下さい。 =IF(OR(ROWS($3:3)>50,INDEX($A:$A,(COLUMNS($B:B)-1)*50+ROWS($3:3)-1+ROW($A$2))=""),"",INDEX($A:$A,(COLUMNS($B:B)-1)*50+ROWS($3:3)-1+ROW($A$2)))  次に、B3セルをコピーして、B4~B52の範囲に貼り付けて下さい。(52行目をオーバーして貼り付けてしまっても構いませんが)  次に、B列全体をコピーして、C列、D列、E列・・・・・に貼り付けて下さい。  以上です。  因みに、この関数の場合は、A列が空欄となっている箇所を表示する場合には、回答:No.2様の関数と同様に、正しく何も表示されない様になっていて、回答:No.1様や回答:No.4様の関数の様に、0が表示されたりはしません。

momomario
質問者

お礼

すぐにやってみましたが出来ました。ありがとうございます。 お礼の仕方がわからず、遅くなってしまいました。 すごく、すごく助かりました。 本当にありがとうございました。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

こんばんは! 関数での方法はすでに出ていますので、VBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) 尚、データは1行目からあるとします。 Sub Sample() 'この行から Dim i As Long, cnt As Long cnt = 1 For i = 51 To Cells(Rows.Count, 1).End(xlUp).Row Step 50 cnt = cnt + 1 Cells(i, 1).Resize(50, 1).Cut Cells(1, cnt) Next i End Sub 'この行まで ※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。m(_ _)m

momomario
質問者

お礼

お返事ありがとうございました。 やってみましたが、マクロはよくわかりませんでした。 申し訳ありません

回答No.4

イメージがワカナイが、、、 =IF((ROW()-ROW($A$2))>=50,"",OFFSET($A$2,(ROW()-ROW($A$2))+(COLUMN()-COLUMN($B$2))*50,0))

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

転記する「条件」がないのであれば、すごく単純に考えて、 B1セル:=A51 C1セル:=A101 D1セル:=A151     ・     ・ で必要列数作り、 これらを50行目までコピー で事足りるような気もしないでもないです。 A列が空白だと「0ゼロ」が返りますので、この考慮は必要です。 IF関数を使うとか、表示形式で非表示にするとかですね。 もちろん、どんなやり方をしても 「関数だけでは」A51セル以下が残ってしまいますけどね。 これを解消するとしたら・・1~50行目をコピー、同範囲に値を貼り付け、 その後、51行目以降を削除・・ですね。 あるいは、マクロの出番でしょうか。

momomario
質問者

お礼

わかりやすかったです。ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

B1セルには次の式を入力して右横方向にドラッグコピーしたのちに下方向にもドラッグコピーします。 =IF(OR(ROW(A1)>50,INDEX($A:$A,ROW(A1)+(COLUMN(A1)-1)*50,1)=""),"",INDEX($A:$A,ROW(A1)+(COLUMN(A1)-1)*50,1))

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

B1に以下の様な式を入れ、上下左右にコピーでどうでしょうか? =INDEX($A:$A,ROW($A1)+(COLUMN(A$1)-1)*50,1)

関連するQ&A