dポイントプレゼントキャンペーン実施中!

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

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

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

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

 という風に。

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

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

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

A 回答 (8件)

住所録データ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までの数字を入れてください。
    • good
    • 0

ちょっと回り道なら、以下の方法があります


「秀丸エディタ」(以下「秀丸」)
http://www.vector.co.jp/soft/win95/writing/se086 …
というソフトが必要となります。
シェアウェア(無料で試用できますが、継続して使うには代金の支払いが必要なソフト。ソフトによっては使える機能に制限がある)ですが、このソフトは機能制限なく試用できます。

まず、エクセルで「担当者」と「郵便番号」、「ビル名」と「備考」の間に列を挿入します。そこに、「☆」を入力します。
------→
宛名敬称担当者☆郵便番号住所番地ビル名☆備考
宛名1敬称1担当者1☆郵便番号1住所1番地1ビル名1☆備考1
宛名2敬称2担当者2☆郵便番号2住所2番地2ビル名2☆備考2
宛名3敬称3担当者3☆郵便番号3住所3番地3ビル名3☆備考3

これをコピーし、秀丸に貼り付けます。
秀丸で「検索」→「置換」のメニューで
・検索:☆\t
・置換:\r
「正規表現」にレ点
で、OKを押します。
そうすると、以下のようになります
------→
宛名敬称担当者
郵便番号住所番地ビル名
備考
宛名1敬称1担当者1
郵便番号1住所1番地1ビル名1
備考1
宛名2敬称2担当者2
郵便番号2住所2番地2ビル名2
備考2
宛名3敬称3担当者3
郵便番号3住所3番地3ビル名3
備考3

これをコピーし、エクセルに貼り付けます。

※解説
エクセルのデータを秀丸に「コピー&ペースト」すると“タブ区切り”のデータになります。
ここで「☆」マークをつけたところを「置換」で“改行”に置き換えます。
…☆\t ☆+タブ記号
 \r 改行記号
    • good
    • 1
この回答へのお礼

みなさん、ご丁寧に回答いただき、誠にありがとうございました。
たくさんの方に回答していただけたことに大変驚き、うれしく思っています。

さて、肝心の資料作成ですが、mt2008さんの方法でうまくいきました。
パソコンが苦手で資料作成となるとすぐに壁にぶち当たってしまいます。
ですので、このような場でみなさんの知識をお借りできることが
非常に有難いです。
質問文に分かりづらい表現もありましたが、回答いただき本当に有難うございました。
今後ともよろしくお願いいたします。

お礼日時:2008/10/09 23:25

質問がわかりにくい。

しかし1行データを2行、3行に分割する問題だろう。たまにココの質問コーナーに質問が出る。
類型的な問題であることがわかっておれば、質問表現もすっきりできるだろう。
表の組み換え問題は、エクセル関数では、ややこしい式になって苦手の分野だと思う。
VBAなら素直なロジックで解決できる。
関数では
例データ
(1,1)(1,2)(1,3)(1,4)(1,5)(1,6)(1,7)
(2,1)(2,2)(2,3)(1,4)(2,5)(2,6)(2,7)
・・

別シートの
(1,1)(1,2)(1,3)(1,4)
(1,5)(1,6)(1,7)
(2,1)(2,2)(2,3)(2,4)
(2,5)(2,6)(2,7)
・・・
に並べ替えるとすると
(行の計算)
シート1のどの行から持ってくるかを決めるのは、自分の行から計算して,シート2上での計算の
INT((ROW()-1)/2)+1  の計算でシート1の行がもとまる。
(列の計算)
シート1ののどの列から持ってくるかは、奇数行では第1-4列
偶数列では第5-7列だから
=MOD(ROW()-1,2)*4+COLUMN()
----
(INDEX関数利用)
全体的にはシート1から=INDEX()関数で、上記で計算した行、列に基づいてデータをシート1から採ってくる。
ーーー
例データ Sheet2
下記の例の作り方が、わかりやすいことが納得できますか。
11121314151617
21222324252627
31323334353637
・・・
結果  Sheet3
A列   B列  C列   D列
11121314
1516170
21222324
2526270
31323334
3536370
・・・
ーーー
式 Sheet3のA1に
=INDEX(Sheet2!$A$1:$H$100,INT((ROW()-1)/2)+1,MOD(ROW()-1,2)*4+COLUMN())
A1の式をD1まで式を複写
A1:D1を下方向に式を複写。
0を出さない方法は列が7を超えていることをIF関数で組み込むが長くなるので今回は省略。
    • good
    • 0

#5です。


訂正です。

ROW()/3+1

(ROW()+1)/3+1
    • good
    • 0

sheet1のA2から、データが入っているとする。

これの必要な列を選んで、sheet2のA2から3行に表示するようにする。列方向は必要な列を選ぶのだから、ドラッグしてフィルすることはできない。
行方向をドラッグできるようにする。
たとえば、

sheet2
A2:=INDIRECT("sheet1!A"&INT(ROW()/3+1))
B2:=INDIRECT("sheet1!C"&INT(ROW()/3+1))
C2:=INDIRECT("sheet1!D"&INT(ROW()/3+1))
A3:=INDIRECT("sheet1!E"&INT(ROW()/3+1))
B3:=INDIRECT("sheet1!F"&INT(ROW()/3+1))
C3:=INDIRECT("sheet1!H"&INT(ROW()/3+1))
D3:=INDIRECT("sheet1!I"&INT(ROW()/3+1))
A4:=INDIRECT("sheet1!K"&INT(ROW()/3+1))
として、
A2~D4の3行を選択して、下にドラッグ/コピーする。
    • good
    • 0

はじめまして



本当は、マクロ(VBA)を使えば簡単です。
とは言っても、そのためにマクロを覚えるにはそれなりの時間がかかります。

関数では、「INDIRECT」を使えばできると思います。ほかに、
INT
MOD
ROW
COLUMN
の関数が必要なので、関数が複雑になります。
…関数でうまくやってみようと思いましたが、苦戦中です。
    • good
    • 0

別シートに


=INDEX(Sheet1!$1:$65536,INT(ROW(A2)/2),IF(MOD(ROW(A1),2),COLUMN(A1),COLUMN(A1)+4))
入れて右へ4つコピィ
下へコピィしてみてください。

或いは
=INDEX(Sheet1!$1:$65536,INT(ROW(A2)/2),IF(MOD(ROW(A1),2),COLUMN(A1),COLUMN(A1)+3))
右へ3つコピィ
下へひとつコピィ、右へ5列目までコピィ
2列を選んで下までコピィ
    • good
    • 1

不要な列を選んで、列の非表示を行うのはどうですか?


Ctrlキーを押しながら、列をクリックすれば、複数の列が選択できますから、選択後 書式メニュー・列・表示しない と選択してみてください。
    • good
    • 1

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