プロが教えるわが家の防犯対策術!

エクセルで行列の入れ替えの応用(になるのでしょうか?)をお尋ねします。
A列に例えば100行のデータが入っているのを、5行ずつ横並べにして、20行にしたい時どうすればよいでしょうか?

A列
-------
データ1
データ2
データ3
データ4
データ5
データ6
データ7
データ8
データ9
データ10
(続く…)
--------
こうなっているのを、

 A列  B列   C列  D列   E列
------------------------------------------
データ1 データ2 データ3 データ4 データ5
データ6 データ7 データ8 データ9 データ10
(続く…)
----------------------------------------
このように、表示したいのです。

お尋ねしているのは、100行ですが、
実は1500行ほどの長い名簿データが元のものです。

宜しくお願い致します。

A 回答 (5件)

なんか関数でウルトラCが出来そうなんですが、とりあえず簡単な方法で。



1.列の横に「ABCDEABCDE・・・」と繰り返す列を作ります。
 2回ぐらい繰り返せば、オートフィルで勝手に下まで埋めてくれます。

2.オートフィルタで「A」を抽出すれば1,6,11,16,...行のデータが
 抽出されますので、そいつを「コピー」します。

3.後は順に「B」「C」「D」「E」をコピーすればオッケーです。
    • good
    • 1
この回答へのお礼

投稿した10分後あまりと、すぐにお答えしていただきありがとうございました。おかげ様で15分後には、作業に入る事ができました。『関数でウルトラCが出来そう…』との事でしたので、そういった回答が投稿されるのを期待して、とりあえず人数の少ない名簿からFEX2053様の方法で作業を始めていきました。
オートフィルタをそういう方法で使うのは、思いつかなかったです。エクセルは、たとえ関数がわからなくても使い方次第ですね。大変ありがとうございました。

お礼日時:2008/01/23 19:27

すいません。

つたないもので。一応動きます。
Sub xxx()
c = 1
For i = 1 To 100 Step 5
Range("A" & i & ":A" & i + 4).Copy
Range("B" & c).Select
Selection.PasteSpecial Paste:=xlPasteAll, Transpose:=True
c = c + 1
Next i
End Sub
    • good
    • 2
この回答へのお礼

関数が来るかと思いきや、更に高度なVB(でしょうか?違ったらすみません…><;)の投稿が来るとは思いませんでした。どうもありがとうございます。
せっかくお助けいただいたにも関わらず、私がVB(?)の使用方法が分からない為、使用せずに終わってしまいました。大変申し訳ございません。
自分のエクセル理解レベルを明記しておくべきでした。

投稿して、すぐにこんな高度なものを考えていただき、大変ありがとうございました。

お礼日時:2008/01/23 19:38

1行目がタイトルで、データは2行目から1500行目までA列に格納されていると仮定して説明します。


b1に1c1に2d1に3E1に4f1に5と入力して
b2に=INDEX($A$2:$A$1501,(ROW(B2)-2)*5+B$1,1)と入力し、これをf2までコピーした後、300行目までコピーすれば
5行を1列にすることができます。
    • good
    • 1
この回答へのお礼

回答いただき、ありがとうございます。
こちらに投稿するまえに、『エクセル 5行ずつ1列に』とか『エクセル 行を列』とかで散々ぐぐっていた時に、丁度これに似たindex関数のものを見つけたのです。でも私では、色々心当たりの数値を変えてみても上手くいかずに、こちらに投稿させていただいたのです。
今はおかげ様で、うまく作業を進められています。
大変ありがとうございました。

お礼日時:2008/01/23 19:56

次の方法は如何でしょうか。


(1)別シートにA1に次の数式を設定し、縦横に必要分コピーして下さい。
=OFFSET(Sheet1!$A$1,COLUMN()-1+(ROW()-1)*5,0)
  元データシートをsheet1としています。
(2)並び替え範囲コピー→貼り付け先を選択→形式を選択して貼り付け→値を選択→OK
    • good
    • 17
この回答へのお礼

回答ありがとうございました。
丁度名簿がシートで分かれていたので、この回答をいただいた後は作業用のシートを増やして、この方法で作業を行わせていただいています。
大変ありがとうございました!
Index関数での方法といい、この「(ROW()-1)*5,0」この辺りを理解、発想できるかが、肝なのかなぁ。と感じました。
事務系職ではないのですが、色々応用できるので、エクセルが使いこなせるようになりたいと切に思う今日この頃です…。

お礼日時:2008/01/23 20:04

同じシートまたは他のシートの任意の空きセルに次式を入力して、右方4列および下方にズズーッとドラッグ&コピー


=OFFSET(Sheet1!$A$1,(ROW(A1)-1)*5+COLUMN(A1)-1,)
    • good
    • 9
この回答へのお礼

回答いただきありがとうございました。
私が質問を締め切るのが遅くなり、申し訳ありません。
mike_g様の回答も、方法が非常簡単でとても役に立ったのですが、今回、登校時にとても急いでいたので、回答の早さ重視でポイントをつけさせていただきました。誠に申し訳有りません。

同じ結果でも、少しずつ色んな方法で出来るのですね。OFFSET関数は、今日まで存在さえ知りませんでした。本当にありがとうございました。機会があれば、次回も宜しくお願い致します。

お礼日時:2008/01/23 20:13

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

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


このQ&Aを見た人がよく見るQ&A