マンガでよめる痔のこと・薬のこと

エクセル2000で、A1~A500までデータが縦並びに入力されています。

これを5列毎に改行して、横並びのデータに加工したいのですが、何か方法ありますか?

図解すると、、


A1
A2
A3
A4
A5
A6
A7


A500

のデータを

A1 A2 A3 A4 A5
A6 A7 A8 A9 A10
・・・・・・
A496 A497 A498 A499 A500



したいのです。

何かよい方法ありましたらお教え願います。

A 回答 (5件)

'直接シートをいじるのでコピーをしてから試してみてください。


Sub Macro1()
COUNTER = 0
For INP = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
COUNTER = COUNTER + 1
Range("A" & INP & ":A" & INP + 4).Copy
Range("B" & COUNTER).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
Next INP
Range("A1").EntireColumn.Delete
End Sub
    • good
    • 10

以下のどちらかでできると思います。



(方法1)VBAでプログラムを組む
 データを1列づつ読み込んで行番号に応じて1~5列に分けてカット&ペーストする。

(方法2)関数とフィルタを使う
 B列に、1~500までの数値を入れる。
 C列に、=MOD(B1,5) (5で割った余り)を入れて以下のセルにコピー&ペースト
 オートフィルタでC列のデータが1のもののみを選択してコピーし、別シートのA列にペースト
 同様に、C列が2,3,4,0のものを選択して別シートのB,C,D,E列にペースト
    • good
    • 1
この回答へのお礼

ありがとうござました。

お礼日時:2011/10/15 23:55

VBAでやると簡単だが、関数でも出来る。


簡単な番地の計算問題だろう。
エクセルは、データを持ってくる方のセルで考えるのだ。
第1行の1列目が何処から持ってくるかを考える。
データの何番目を持ってくるのはINDEX関数だ。そういうのは勉強したのか。
(1,1)-1
(1,2)-2
(1,3)-3   略
(1,4)-4
(1,5)-5
(2,1)-6 -->(2-1)*5+1
(2,2)-7 -->(2-1)*5+2
(2,3)-8 -->(2-1)*5+3
・・
(3,1)-11  -->(3-1)*5+1
こういうルールは中学の数学ででも出てくる常識なんだ。
Sheet2
A列
a1
a2
a3
a4
a5
a6
a7
a8
・・・・
----
Sheet3のA1に =INDEX(Sheet2!$A$1:$A$100,(ROW()-1)*5+COLUMN(),)
と入れてE1まで式複写。
A1:E1を下方向に式複写。
Sheet3 A-E列
a1a2a3a4a5
a6a7a8a9a10
a11a12a13a14a15
ただし、丁寧には、データ数を超えたら空白になるような式をIF関数で加える(略)
    • good
    • 3

VBAでやると簡単だが、関数でも出来る。


簡単な番地の計算問題だろう。
エクセルは、データを持ってくる方のセルで考えるのだ。
第1行の1列目が何処から持ってくるかを考える。
データの何番目を持ってくるのはINDEX関数だ。そういうのは勉強したのか。
(1,1)-1
(1,2)-2
(1,3)-3   略
(1,4)-4
(1,5)-5
(2,1)-6 -->(2-1)*5+1
(2,2)-7 -->(2-1)*5+2
(2,3)-8 -->(2-1)*5+3
・・
(3,1)-11  -->(3-1)*5+1
こういうルールは中学の数学ででも出てくる常識なんだ。
Sheet2
A列
a1
a2
a3
a4
a5
a6
a7
a8
・・・・
----
Sheet3のA1に =INDEX(Sheet2!$A$1:$A$100,(ROW()-1)*5+COLUMN(),)
と入れてE1まで式複写。
A1:E1を下方向に式複写。
Sheet3 A-E列
a1a2a3a4a5
a6a7a8a9a10
a11a12a13a14a15
ただし、丁寧には、データ数を超えたら空白になるような式をIF関数で加える(略)
    • good
    • 2

こんばんは!


一例です。

表示したいセルに

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

として列方向と行方向にオートフィルでコピーではどうでしょうか?m(_ _)m
    • good
    • 16

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで縦一列を縦三列に並べ替えられますか?

並べ替えの作業なのでしょうか、できるかどうか判る方がいたらお願いします。











123
456
789

としたいと思っています。
ちなみにエクセル2003です。

Aベストアンサー

関数でも表示できますが、簡便に対応するなら、空白セルに「\a1」と入力し右方向に3つオートフィルします。
「\a1」と入力したセルの下のセルに「\a4」入力し右方向に3つオートフィルします。
この6つのセルを選択して下方向にデータ数分だけオートフィルドラッグします。

最後にCtrl+Hで置換ダイアログを出して検索する文字列に「\」置換後の文字列に「=」を入力して「すべて置換」します。

Qエクセルで長い行を5行ごとに1列にするには?

エクセルで行列の入れ替えの応用(になるのでしょうか?)をお尋ねします。
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ベストアンサー

次の方法は如何でしょうか。
(1)別シートにA1に次の数式を設定し、縦横に必要分コピーして下さい。
=OFFSET(Sheet1!$A$1,COLUMN()-1+(ROW()-1)*5,0)
  元データシートをsheet1としています。
(2)並び替え範囲コピー→貼り付け先を選択→形式を選択して貼り付け→値を選択→OK

QMS-excel 10列毎に改行したい

MS-excel2003で、A1~W1までデータが横並びに入力されています。

これを10列毎に改行したいのですが、マクロでどのようにやればよいでしょうか?

図解すると、、


A1 B1 C1 D1 F1 G1 H1・・・・

のデータを

A1 B1 C1 D1 F1 G1 H1 I1 J1 K1
L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1
V1 W1・・・・・・



したいのです。

これをマクロで行いたいのですが、ご教授願えませんか。

Aベストアンサー

No.4です。
補足に
>与えられるファイルによって100列以上のものがあったりします。
とありましたので・・・

データは1行目のみあり、何列あっても対応できるようにしてみました。


Sub test2()
Dim i As Long
Application.ScreenUpdating = False
For i = 11 To Cells(1, Columns.Count).End(xlToLeft).Column Step 10
Range(Cells(1, i), Cells(1, i + 9)).Cut
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Next i
Application.ScreenUpdating = True
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
End Sub

こんなんではどうでしょうか?m(_ _)m

No.4です。
補足に
>与えられるファイルによって100列以上のものがあったりします。
とありましたので・・・

データは1行目のみあり、何列あっても対応できるようにしてみました。


Sub test2()
Dim i As Long
Application.ScreenUpdating = False
For i = 11 To Cells(1, Columns.Count).End(xlToLeft).Column Step 10
Range(Cells(1, i), Cells(1, i + 9)).Cut
Cells(Rows.Count, 1).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Next i
Application.ScreenUpdating = Tru...続きを読む

Qエクセルで横並びの複数データを縦の一本のデータにしたい

こんにちは。宜しくお願い致します。

   A   B  C
1 静岡 埼玉 
2 福島 東京 愛媛
3 青森 
4 長崎 徳島 愛媛
5 東京 千葉 
6 秋田 兵庫 大阪
.
.
.


例えばこういう形で好きな都道府県の上位3つの解答がそれぞれあったとします。(1個の人もいるし、2個の人もいます)

これを別のシート(同じシートの違う場所でも構いません)に縦並び1本で出したいときどうしたらいいでしょうか。

★こういう風にしたい★

静岡
福島
青森
長崎
東京
秋田
埼玉
東京
愛媛
徳島
愛媛
千葉
兵庫
大阪
.
.

※好きな県などが人によって重複していても構いません、また順不同でもいいです。(縦並びのデータに東京が20個あってもよいということ)

形式を選択して貼り付けで行列を入れ替えるではうまくいかないです。

宜しくお願い致します。

Aベストアンサー

VBAで、もっと簡単に。
下記をVBEの標準モジュールにコピーし貼りつけ。
元データのあるシートで、データのある範囲を範囲指定して(空白セルが範囲内にあっても結構)、下記を実行。
Sub ichiretu()
Dim cl As Range
p = 1
For Each cl In Selection
If cl <> "" Then
Worksheets("sheet3").Cells(p, "A") = cl
p = p + 1
End If
Next
End Sub
Sheet3のA列に並びます。

Qエクセルで、ある1つの列を複数に分けるには?

エクセルで、
A列
100
101
102
103
104
105
106
107
108

という1列のデータがあるとき、これを下のように書き換えたいのですが、どうすればよいでしょうか?
A列B列C列
100103106
101104107
102105108

excel2003です。
よろしくお願いします。

Aベストアンサー

Sheet1のA列A1:A100にデータがあって、Sheet2に出すなら
Sheet2のA1に=INDEX(Sheet1!$A$1:$A$100,(ROW()-1)*3+COLUMN(),1)
をいれ、その式をC1まで、+を出して引っ張る。
A1:C1を範囲指定し、C3で+ハンドルを出し下方向へ引っ張る。

Qエクセルで縦に並んだデータを横に並び替えたい

エクセルで↓ のようなデータがあります

 | A | B | C | D
1|A店|りんご| 2 |
2|A店|みかん| 3 |
3|A店|バナナ| 4 |
4|B店|りんご| 3 |
5|B店|バナナ| 2 |

これを以下のようなかたちにしたいのですが、一つずつ移動する以外に方法はありますか?

 | A | B | C | D | E | F | G |
1|A店|りんご| 2 |みかん| 3 |バナナ| 4 |
2|B店|りんご| 3 |バナナ| 2 |


100以上データがあり、手作業で移すのは大変です。
ちなみにVBAなどはほとんど理解できません。

何か解決策があればと質問させていただきたました。
よろしくお願いします。

Aベストアンサー

E列に店名リストを作成する
(なければフィルタオプションの設定で重複するレコードを無視するを使うとよい)

F1セルに 1 右へ連番
N2セルに =COUNTIF(A:A,E2) 下へオートフィル
F2セルに
=IF(F$1>$N2*2,"",INDEX($B:$C,MATCH($E2,$A:$A,0)+F$1/2,1))
G2セルに
=IF(F$1>$N2*2,"",INDEX($B:$C,MATCH($E2,$A:$A,0)+G$1/2-1,2))
F2:G2セルを選択して、右へオートフィル、そのまま下へオートフィル

E:N列を選択して 切り取り 別シートへ貼り付け

Qエクセルのデータ、1行を複数行に展開し直したいです。

うまく説明できませんが、筆まめの住所録データをCSV形式にてエクセルに落とし込みました。

その状態では、宛名~備考までの項目が約20、A2~S2に1行に
展開されています。

住所録を社内で回覧できる状態にしたいのですが、今のままでは
項目が多すぎるため、1件について3行程度に項目を折りたたんで
展開したいです。

 宛名|敬称|担当者|郵便番号|住所|番地|ビル名|備考
 
 ↓
 
 宛名 | 敬称 |担当者
 郵便番号 | 住所 | 番地 | ビル名
 備考

 という風に。

別シートに「=sheet1!A2」「=sheet1!B2」というように配置し、
以下ドラックすると、データが2件飛ばしになってしまいます。

簡単に展開しなおせる方法を教えて下さい!!

ずっと調べているのですが、一向に分からずに煮詰まってしまいました。

Aベストアンサー

住所録データ1件がA列~S列まであるんですよね。
質問には何も書いていませんが、本当は何件もデータがあって、別シートに1件につき3行で表示したい。と、言うことであっていますか?
例では8項目ですが、本来は19項目あると……。
質問を見ると住所録データが1件しかないような記述でしたので、思い違いでしたらごめんなさい。

とりあえず、7項目、7項目、5項目と別けると仮定します。
別シートのA2に以下を入れ、G4までコピーし、F4とG4の式を削除します。
=INDEX(Sheet1!$A:$S,INT((ROW()-2)/3)+2,COLUMN()+MOD(ROW()-2,3)*7)

次にA2からG4までを選択して下にずらずらっとコピーします。
表示する項目を変えるときは COLUMN()+MOD(ROW()-2,3)*7 が項目になりますので、1~19までの数字を入れてください。

Qエクセルで、縦項目と横項目を複数列ごとに入れ替える方法はありますでしょうか?

エクセルで、縦項目と横項目を複数列ごとに入れ替える方法はありますでしょうか?例えば、
123
abc
456
def
となっている縦の表を、
123abc456def
としたいのです。
よろしくお願いいたします。

Aベストアンサー

テキストエディタを使うと楽です。
まずExcelで目的の範囲をコピーし、それをテキストエディタに貼り付けます。
置換機能を使って「改行(\n)」を「タブ(\t)」に置換します。
それをコピーしてExcelに貼り付ければ完成です。
テキストエディタは例えばEmEditorがお勧めです。
なおセルに数式が入っているときには数式を表示(Ctrl+Shift+@)しておく必要があると思います。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで数行おきにデータを抽出

エクセルシートで、あるデータ膨大にを出しますよね。
それで、たとえば、三行ごと、四行ごととかであるデータを右の行もしくは左行に抜き出す操作をするにはどうしたらいいですか?
今は、フィルタと可視フィルタを駆使してやっているのですが、一発でバンと出すような方法があると思って・・・数式とかでありそうだなって思って。
教えてください。、

Aベストアンサー

=OFFSET(抽出したい列の一番初めのセルの絶対参照,(ROW(A1)-1)*行間隔,0)
又は
=INDEX(抽出したいセルの範囲の絶対参照,(ROW(A1)-1)*行間隔+1,1)


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

人気Q&Aランキング