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

解決済みの質問

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

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

投稿日時 - 2012-12-18 13:07:07

QNo.7850463

すぐに回答ほしいです

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

 もし、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が表示されたりはしません。

投稿日時 - 2012-12-18 14:55:37

お礼

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

投稿日時 - 2013-01-04 09:23:57

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

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

回答(6)

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

投稿日時 - 2012-12-18 20:24:28

お礼

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

投稿日時 - 2013-01-04 09:22:13

ANo.4

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

投稿日時 - 2012-12-18 14:24:05

ANo.3

転記する「条件」がないのであれば、すごく単純に考えて、

B1セル:=A51
C1セル:=A101
D1セル:=A151
    ・
    ・
で必要列数作り、
これらを50行目までコピー
で事足りるような気もしないでもないです。

A列が空白だと「0ゼロ」が返りますので、この考慮は必要です。
IF関数を使うとか、表示形式で非表示にするとかですね。


もちろん、どんなやり方をしても
「関数だけでは」A51セル以下が残ってしまいますけどね。
これを解消するとしたら・・1~50行目をコピー、同範囲に値を貼り付け、
その後、51行目以降を削除・・ですね。


あるいは、マクロの出番でしょうか。

投稿日時 - 2012-12-18 14:09:39

お礼

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

投稿日時 - 2013-01-04 09:24:22

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

投稿日時 - 2012-12-18 13:30:55

ANo.1

B1に以下の様な式を入れ、上下左右にコピーでどうでしょうか?

=INDEX($A:$A,ROW($A1)+(COLUMN(A$1)-1)*50,1)

投稿日時 - 2012-12-18 13:16:35

あなたにオススメの質問