プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/04 09:22

 もし、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が表示されたりはしません。
「エクセル2007 A列多数セルを50行ご」の回答画像5
    • good
    • 1
この回答へのお礼

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

お礼日時:2013/01/04 09:23

イメージがワカナイが、、、


=IF((ROW()-ROW($A$2))>=50,"",OFFSET($A$2,(ROW()-ROW($A$2))+(COLUMN()-COLUMN($B$2))*50,0))
    • good
    • 0

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



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

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


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


あるいは、マクロの出番でしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/04 09:24

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))
    • good
    • 0

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



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

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