下のような、表データを加工したいと思っています。(表1)を(表2)のように加工したいのですが、AccessかExcelを使って簡単にやるには、どのようにすればいいでしょうか。


(表1)一行につき、チームひとつと名前がひとつ入っています
----------------------------------------
チーム      名前
----------------------------------------
Aチーム      安部
Aチーム      井上
Aチーム      上田
Bチーム      榎
Cチーム      及川
Cチーム      金井
Cチーム      木本
Dチーム      栗田
----------------------------------------

(表2)チームごとに名前がカンマ区切りで並んでいます
----------------------------------------
チーム      名前(カンマ区切り)
----------------------------------------
Aチーム      安部,井上,上田
Bチーム      榎
Cチーム      及川,金井,木本
Dチーム      栗田
----------------------------------------

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:paxil No.1

回答回数375ベストアンサー獲得回数2

ポイント18pt

http://hp.vector.co.jp/authors/VA014071/tips/xl_pvt1.html

Mr.Big〜小技集・ピボットテーブルの基本〜

Excelの”ピボットテーブル”は試されましたか?

id:nouv

試してみましたが、行フィールドに「チーム」、列フィールドに「名前」をドラッグして、(それぞれのチームに所属するメンバーの名前がカンマ区切りで表示されるのを期待して...)データアイテムに「名前」をドラッグすると、数字が表示されてしまいます。うまくいく方法はありますでしょうか?

2005/07/26 20:58:34
id:sparituda No.2

回答回数57ベストアンサー獲得回数0

ポイント18pt

http://www.hatena.ne.jp/1122378304#

人力検索はてな - 下のような、表データを加工したいと思っています。(表1)を(表2)のように加工したいのですが、AccessかExcelを使って簡単にやるには、どのようにすればいいでしょうか..

ExcelでA列にチーム、B列に名前があるとします。

1)まず、チーム順(必要ならチーム-名前順)にデータを並べ替えてください。

2)次に、C2、D2に次の式を入れます。

=IF(A1=A2,C1&”,”,””)&B2

=IF(A3=A2,””,”X”)

3)C2とD2の式を下方向にコピーし、再計算します。

4)D列の値がXである行がご希望の結果です。フィルターか並べ替えで抜き出して、ご利用ください。(並べ替えの場合は、計算結果の値だけを別の場所にコピーしてから。)

id:nouv

ありがとうございます。いい方法ですね。

2005/07/27 03:26:26
id:yoo15x No.3

回答回数150ベストアンサー獲得回数1

ポイント18pt

http://plaza.rakuten.co.jp/urawazakun/

エクセル裏技     Excel裏技 - 楽天ブログ(Blog)

URL はダミーです。


Excel 2000 にて検証しました。


(表1)は既に Excel のシートになっていて、A1 から「チーム」となっているものとします。

データは A2、B2 以下に入力されている状態です。


Step1:

表を「データ」から「並べ替え」します。

最優先キー「チーム」、2番目の優先キー「名前」、ともに昇順、ふりがなを使用するオプション。

これでチーム内は 50音順になりました。


Step2:

いくつかのセルに式を入力します。

C2 「=IF(A2=A3,1,0)」、D2 「=IF(C2=0,A2,””)」、E2 「=IF(OR(C1=0),B2,E1&”,”&B2)」

それぞれ、チーム内の後続データの有無、チーム内最終ならチーム名を検出、チームメンバーの繰り返し追加、をしています。


Step3:

C2 ~ E2 を選択して、名簿最終行までドラッグして式を連続データにします。


Step4:

D列、E列を選択してコピーしたら別のワークシートの A1 に「値の貼り付け」でペーストします。


Step5:

貼り付けられたデータを、最優先キー 列A で並べ替えます。


Step6:

A列が空の範囲の行を選択して削除すれば完成です。

id:nouv

ありがとうございます。いい方法ですね。

2005/07/27 03:30:05
id:JunK No.4

回答回数707ベストアンサー獲得回数18

ポイント18pt

蛇足かもしれませんが・・・ m(_._)m。


D~G列の4行以降では、IF関数を利用して、各チームの構成メンバーをカンマ区切りで一人ずつ順番に一つの文字列にしていっています。元データの最終行までいくと、各チームの構成メンバーのカンマ区切りデータが完成します。


そして、D~G列の2行では、最終行のデータを抽出しています。

抽出方法は、元データの数をI7にて、=ROWS(A:A)-COUNTBLANK(A:A)として算出して

   ※一旦、CODE関数等で数値データにするとcount関数が使えて簡単ですけど。

その情報を元にINDEX関数とOFFSET関数を利用して行っています。


そしたら、抽出した各チームの構成メンバーのカンマ区切りデータとタイトル行とを

TRANSPOSE関数にて、行列交換しててます。


最後に、末尾のカンマを消して完成です。


対象人数が増えた場合はA,B列にデータを付け加えて、D~G列の4行以降に一文字列化関数を貼り付けたり、

Eチーム等が増えた場合は、H列に新たに付け加えて、改良していけばよいかと思います。


尚、このファイルはすぐに消去します。

id:nouv

ありがとうございます。いい方法ですね。

2005/07/27 07:20:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません