こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル 表の形態を効率よく変更したい

以下の見積の表があります。
  A   B   C   D
1 大項目 小項目 金額 シートNO'
2  あ    a   2000    1
3  あ    b   3000    2
4  い    a   1000    3
5  い    b   3000    4
6  い    c   2000    5
・  ・    ・    ・   ・
・  ・    ・    ・   ・

これを。
  A  B   C   D
1  あ           
2    a   2000   1
3    b   3000   2
4  い           
5    a   1000   3
6    b   3000   4
7    c   2000   5

・・・とした表を別に作成したいのです。
一つの大項目に対して、小項目は最大4つほどあります。
大項目については、40近くあります。
今後これを元に利用したいので。
項目の数、内容、金額は随時変わる予定です。
そして、前者の表は、各シートから其々データを参照してきています。
関数などを利用し、効率よく変更できないでしょうか。
よろしくお願いします。

投稿日時 - 2007-09-19 11:39:07

QNo.3358259

困ってます

質問者が選んだベストアンサー

集計やピボットテーブルを使ってみるとか

投稿日時 - 2007-09-19 13:00:06

補足

ありがとうございます。
ピボットテーブルをはじめて使ったのですが。
項目(金額、シートNo.)が二つではうまく表にあらわせないのでしょうか?
うまくいかないのですが・・・。
よろしくお願いします。

投稿日時 - 2007-09-19 16:34:37

お礼

集計でなんとかやってみました。
ありがとうございました。

投稿日時 - 2007-09-20 22:16:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>関数などを利用し、効率よく変更できないでしょうか。
関数の本質を知らないから言うことで、はっきり言って(不可能)簡単にはできません。
(VBAなら素直な考えでプログラムが組めて、造作なくできる問題です。VBA向きの問題です)
関数は、自分自身以外のセルの値を持ってくるとき、どこのセルから持ってくるか、データの有様で変化するタイプは、非常に複雑になります。
質問例では、新様式でのシートで、「い」の収まる行は、「あ」の明細行の数で、影響を受けます。
そういうことで、私の自称imogasi方式の考え方を応用してやって見ますが、作業列を3列も(2行にはできるかも知れないが)使わざるを得ません。imogasi方式の欠点ですが、考え方の軌跡が、少しわかりやすいかなという方式です。mogasi方式は条件により該当データ行を抜き出すために使って回答を多数挙げています。
例データ Sheet1A1:D12 E,F,G列は作業列で下記関数を入れた結果
大項目小項目金額シートNO'
あa20001132
あb3000214
いa10003265
いb3000427
いc2000528
うa300063109
うc20007311
うd40008312
うe50009313
えa20001041514
えd100011416
E2の式
=IF(COUNTIF($A$2:A2,A2)=1,MAX($E$1:E1)+1,E1)
F2の式
=ROW()+E2
G2の式
=IF(A2<>A1,ROW()+E1,"")
結果は上記の通り。
Sheet2で
A2に
=IF(ISERROR(MATCH(ROW(),Sheet1!$G$1:$G$100,0)),"",INDEX(Sheet1!$A$1:$A$100,MATCH(ROW(),Sheet1!$G$1:$G$100,0),1))
下方向にA16まで式を複写。
B3に
=IF(ISERROR(MATCH(ROW(),Sheet1!$F$1:$F$100,0)),"",INDEX(Sheet1!$A$1:$D$12,MATCH(ROW(),Sheet1!$F$1:$F$100,0),COLUMN()))
D3まで右方向に式を複写。
B3:D3を範囲指定し。+ハンドルを出して、式を下方向に複写。
結果 -は実際は空白セル。左詰めされるのを防ぐためわざと入れたもの。実際のテスト例で見てください。

ーa20001
ーb30002

ーa10003
ーb30004
ーc20005

ーa30006
ーc20007
ーd40008
ーe50009

ーa200010
ーd100011

投稿日時 - 2007-09-19 17:45:35

お礼

VBA初心者で。
なんとか一つ組んだばかりだったので。
関数でなんとかしたいな~と思っていたしだいです。
作業上、表はシート一枚に収めたいので。
集計を加工して使うことにいたしました。
ありがとうございました。

投稿日時 - 2007-09-20 22:21:46

ANo.2

ご希望とは少し違いますが、下記のように複数の大項目を見えなくする方法です。

  A   B   C   D
1 大項目 小項目 金額 シートNO'
2  あ    a   2000    1
3       b   3000    2
4  い    a   1000    3
5       b   3000    4
6       c   2000    5
・  ・    ・    ・   ・

1) セルA2をアクティブにして、「書式」→「条件付書式」を選択します。

2) 表示されるダイアログで、「セルの値が」「次の値に等しい」「=A1」「書式」ボタンを押してフォントの色を「白」に設定します。

3) セルA2を下にフィルして「書式のコピー」をします。

見積書の大項目が1個しか見えないので、視認性が若干UPするのではないかと思います。

投稿日時 - 2007-09-19 17:43:05

お礼

この表を今後活用するにあたり、集計を使うことにしました。
ありがとうございました。

投稿日時 - 2007-09-20 22:18:14

あなたにオススメの質問