- ベストアンサー
エクセル2007 A列多数セルを50行ごとに区切る
A列にひたすら数字のセルがあります。これを50セルごとに区切って、B列、C列、D列・・・・・に50行ごとに割り振っていきたいのですが、こんなことを出来る関数はありますか? 複数列を1列にする関数は聞いたことがあるのですが、1列を複数列にする関数は聞いた事がありません。どうか教えてください。 こんな風にしたいというイメージ画像を添付します。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
もし、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が表示されたりはしません。
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 関数での方法はすでに出ていますので、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
お礼
お返事ありがとうございました。 やってみましたが、マクロはよくわかりませんでした。 申し訳ありません
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
イメージがワカナイが、、、 =IF((ROW()-ROW($A$2))>=50,"",OFFSET($A$2,(ROW()-ROW($A$2))+(COLUMN()-COLUMN($B$2))*50,0))
- tsubuyuki
- ベストアンサー率45% (699/1545)
転記する「条件」がないのであれば、すごく単純に考えて、 B1セル:=A51 C1セル:=A101 D1セル:=A151 ・ ・ で必要列数作り、 これらを50行目までコピー で事足りるような気もしないでもないです。 A列が空白だと「0ゼロ」が返りますので、この考慮は必要です。 IF関数を使うとか、表示形式で非表示にするとかですね。 もちろん、どんなやり方をしても 「関数だけでは」A51セル以下が残ってしまいますけどね。 これを解消するとしたら・・1~50行目をコピー、同範囲に値を貼り付け、 その後、51行目以降を削除・・ですね。 あるいは、マクロの出番でしょうか。
お礼
わかりやすかったです。ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
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)
B1に以下の様な式を入れ、上下左右にコピーでどうでしょうか? =INDEX($A:$A,ROW($A1)+(COLUMN(A$1)-1)*50,1)
お礼
すぐにやってみましたが出来ました。ありがとうございます。 お礼の仕方がわからず、遅くなってしまいました。 すごく、すごく助かりました。 本当にありがとうございました。