- ベストアンサー
エクセルのデータ、1行を複数行に展開し直したいです。
うまく説明できませんが、筆まめの住所録データをCSV形式にてエクセルに落とし込みました。 その状態では、宛名~備考までの項目が約20、A2~S2に1行に 展開されています。 住所録を社内で回覧できる状態にしたいのですが、今のままでは 項目が多すぎるため、1件について3行程度に項目を折りたたんで 展開したいです。 宛名|敬称|担当者|郵便番号|住所|番地|ビル名|備考 ↓ 宛名 | 敬称 |担当者 郵便番号 | 住所 | 番地 | ビル名 備考 という風に。 別シートに「=sheet1!A2」「=sheet1!B2」というように配置し、 以下ドラックすると、データが2件飛ばしになってしまいます。 簡単に展開しなおせる方法を教えて下さい!! ずっと調べているのですが、一向に分からずに煮詰まってしまいました。
- みんなの回答 (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までの数字を入れてください。
その他の回答 (7)
- rukuku
- ベストアンサー率42% (401/933)
ちょっと回り道なら、以下の方法があります 「秀丸エディタ」(以下「秀丸」) http://www.vector.co.jp/soft/win95/writing/se086280.html というソフトが必要となります。 シェアウェア(無料で試用できますが、継続して使うには代金の支払いが必要なソフト。ソフトによっては使える機能に制限がある)ですが、このソフトは機能制限なく試用できます。 まず、エクセルで「担当者」と「郵便番号」、「ビル名」と「備考」の間に列を挿入します。そこに、「☆」を入力します。 ------→ 宛名 敬称 担当者 ☆ 郵便番号 住所 番地 ビル名 ☆ 備考 宛名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 改行記号
- imogasi
- ベストアンサー率27% (4737/17069)
質問がわかりにくい。しかし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 下記の例の作り方が、わかりやすいことが納得できますか。 11 12 13 14 15 16 17 21 22 23 24 25 26 27 31 32 33 34 35 36 37 ・・・ 結果 Sheet3 A列 B列 C列 D列 11 12 13 14 15 16 17 0 21 22 23 24 25 26 27 0 31 32 33 34 35 36 37 0 ・・・ ーーー 式 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関数で組み込むが長くなるので今回は省略。
- okormazd
- ベストアンサー率50% (1224/2412)
#5です。 訂正です。 ROW()/3+1 ↓ (ROW()+1)/3+1
- okormazd
- ベストアンサー率50% (1224/2412)
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行を選択して、下にドラッグ/コピーする。
- rukuku
- ベストアンサー率42% (401/933)
はじめまして 本当は、マクロ(VBA)を使えば簡単です。 とは言っても、そのためにマクロを覚えるにはそれなりの時間がかかります。 関数では、「INDIRECT」を使えばできると思います。ほかに、 INT MOD ROW COLUMN の関数が必要なので、関数が複雑になります。 …関数でうまくやってみようと思いましたが、苦戦中です。
- hallo-2007
- ベストアンサー率41% (888/2115)
別シートに =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列を選んで下までコピィ
- kokorone
- ベストアンサー率38% (417/1093)
不要な列を選んで、列の非表示を行うのはどうですか? Ctrlキーを押しながら、列をクリックすれば、複数の列が選択できますから、選択後 書式メニュー・列・表示しない と選択してみてください。
お礼
みなさん、ご丁寧に回答いただき、誠にありがとうございました。 たくさんの方に回答していただけたことに大変驚き、うれしく思っています。 さて、肝心の資料作成ですが、mt2008さんの方法でうまくいきました。 パソコンが苦手で資料作成となるとすぐに壁にぶち当たってしまいます。 ですので、このような場でみなさんの知識をお借りできることが 非常に有難いです。 質問文に分かりづらい表現もありましたが、回答いただき本当に有難うございました。 今後ともよろしくお願いいたします。