- ベストアンサー
excelの表を加工したい
excel97 win2000です 毎月、下記のような表をもらっています チョコ 値段 アイス 値段 ラムネ 値段 A社 3 100 2 200 5 1000 B社 5 500 4 400 2 200 C社 3 100 2 200 4 800 D社 3 100 3 300 1 200 E社 4 400 2 200 5 1000 これを別の用途に使うため下記のように加工したいのですが よい方法はありませんでしょうか 買い物 値段 A社 チョコ 100 B社 チョコ 500 C社 チョコ 100 D社 チョコ 100 E社 チョコ 400 A社 アイス 200 B社 アイス 400 C社 アイス 200 D社 アイス 300 E社 アイス 200 A社 ラムネ 1000 B社 ラムネ 200 C社 ラムネ 800 D社 ラムネ 200 E社 ラムネ 1000 ACCESSに取り込んでいろいろとやっていたのですが アイス、チョコなどの項目が月によって違ったり 項目の増減があったりしていちいちメンテが大変です どなたかご教授ください よろしくお願いいたします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もらった表がSheet1として Sheet2に A2=INDIRECT(ADDRESS(MOD(ROW()-2,COUNTA(Sheet1!$A:$A))+2,1,,,"Sheet1")) B2=INDIRECT(ADDRESS(1,INT((ROW()-2)/COUNTA(Sheet1!$A:$A))*2+2,,,"Sheet1")) C2=INDIRECT(ADDRESS(MOD(ROW()-2,COUNTA(Sheet1!$A:$A))+2,INT((ROW()-2)/COUNTA(Sheet1!$A:$A))*2+3,,,"Sheet1")) として下方にコピー、B列に0が表示されたところで終了 下記の表になります。こちらのシートをインポートする。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
このタイプの問題は、既にご解答のような複雑な関数式を理解し、自分の問題に合わせて作りなおすか VBAでプログラムを組むかどちらかです。 人間がイメージすると、直ぐできそうですが、 エクセルでは苦手のタイプではと思います。 関数式では、A社とB社でデータ入力列数が違う(不定)とお手上げではないかと想像します(もし#2のご解答で対応できている場合は、mshr1962さん済みません。) 私としてはVBAで処理したいですが、お口に合いますでしょうか。 最近 http://okweb.jp/kotaeru_reply.php3?q=1012029 や この質問で紹介されている質問など、このタイプの質問が出ています。 わたしも書きこんでいますので、良ければ参考にご覧下さい。
補足
回答ありがとうございました やはりVBAになりますね・・・ ちょっと私には内容が難しかったです
- nitto3
- ベストアンサー率21% (2656/12205)
自動作成でなければドラグ&ペーストで簡単に出来ますよ。
補足
回答ありがとうございます そうですよね ただ、右向きの項目が多い+データが400行あるので エクセル上で扱うとなるとちょっと面倒で・・・ はじめは会社名の列を項目の前の列にコピー&挿入して ひとまとまりのデータずつ 最終行の下に移動させていく方法をとっていたのですが 他にいい方法があればお教えください
- snoopy64
- ベストアンサー率42% (337/793)
上表から下表を作りたいのですね。 このような質問をよく見るのですが、これは作表の向きが逆なんですよね^^; 上表ではもうそれ以上の加工ができません。 下表の形でないと集計には不向きです。 上表を作った人も元ネタは下表のようなデータだったはずですので、今後は元ネタのままくださいと、その人に依頼するのが本来の解決方法です。 頑張ってくださいヽ(^。^)ノ
補足
さっそくの回答ありがとうございます 実は私もそう思い、お願いしてみたのですが どうも担当者も取引先からそのデータをいただいているそうで 元データをいただける状況ではないのだそうです
補足
ありがとうございます 確かに結果はそうなりました ただ、質問のために表を簡素化してしまっていたので 実際の表は 社名 会社コード 住所 買い物 商品コード 値段 買い物 商品コード 値段 買い物 商品コード 値段・・・ というように項目がもっと多いのです そうなると教えていただいた関数を全部理解して 応用しなければ使えないですよね? ・・・ちょっとむずかしい気がしてきました・・・