グッドデザイン賞を受賞したウォーターサーバー >>

エクセル2002を使っています。

例)太郎 50
  花子 20
  太郎  5
  和夫 75
  太郎 15
  花子 45
  和夫 25

というようなデータを

  太郎 70
  和夫 100
  花子 65

というように、同じ名前の人のデータ(点数)を合計して、整理したい
(こういうの名寄せと言うんでしょうか?)
のですが、どのような式、マクロ等で処理すればよいでしょうか?
ちなみに、当方、マクロ等はほとんど分からない初級者です。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

[ピボットテーブル レポート]を利用すれば、式もマクロも不要で、かつ、自動的に「重複するレコードは無視」します。

結果だけを示しておきます。

  A   B  C    D     E
1 NAME POINT
2 太郎   50
3 花子   20   合計 / POINT
4 太郎   5   NAME     合計
5 和夫   75   花子      65
6 太郎   15   太郎      70
7 花子   45   和夫      100
8 和夫   25   総計      235
    • good
    • 0
この回答へのお礼

ありがとうございました。
[ピボットテーブル レポート]初めて使ってみましたが、思い通りの
集計ができました。助かりました。

お礼日時:2007/03/25 21:25

マクロは必要ありません。

最初に重複しない氏名リストを作成し、次にSUMIF関数で集計します

まず氏名リストの先頭にタイトル行を追加してください。そうしないと重複しない氏名リストが作成できません。
     A列  B列  
1行目 氏名
2行目 太郎   50
   …以下続く

「データ」→「フィルタ」→「フィルタオプションの設定」を選択します。抽出先として「指定した範囲」を選択し、リスト範囲は「A1:A100」、抽出範囲は「C1」を入力し、「重複するレコードは無視する」にチェックを入れて「OK」します

するとC1から下に重複しない氏名のリストが作成されます。氏名リストが100行以上あるなら、リスト範囲はA1:A500のようにもっと大きな範囲を指定してください。

C2には太郎の名前があるはずです。D2には以下の式を入れます
 =SUMIF($A$2:$A$100,C2,$B$2:$B$100)
結果は70になるはずです。C2セルを下方向にコピーすると目的のリストが完成します。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ご回答いただいた皆様のアドバイスで、思い通りの集計ができました。助かりました。

お礼日時:2007/03/25 21:26

こちらをご参考に。



「SUMIF関数」
http://officetanaka.net/excel/function/function/ …
    • good
    • 0
この回答へのお礼

ありがとうございました。
ご回答いただいた皆様のアドバイスで、思い通りの集計ができました。助かりました。

お礼日時:2007/03/25 21:26

SUMIF関数を使えばできますよ。

    • good
    • 0
この回答へのお礼

ありがとうございました。
ご回答いただいた皆様のアドバイスで、思い通りの集計ができました。助かりました。

お礼日時:2007/03/25 21:28

それは「クロス集計」にするということですね。


エクセルの場合、ピポットテーブルという機能があります。
エクセルのバージョンによって違うので、詳細は説明しにくいですが、
上部のツールバーのところのどこかにあるかと思いますので、ヘルプ
か何かで探して試してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ご回答いただいた皆様のアドバイスで、思い通りの集計ができました。ピポットテーブル、便利ですね。あっという間にできました。
助かりました。

お礼日時:2007/03/25 21:27

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの46000件のデータ名寄せで困ってます

こんばんは遅い時間にすいません。

46000件のエクセルデータ名寄せを明日の午前9時までに
完了しなければなりません、、、こちらの勝手な都合ですみませんが



どうかお教えください。
異なるブックにあるデータで顧客名だけが同一となっています。
同一の顧客名のあとに異なるデータをそれぞれの行の⇒に
くっつけたいです。
ただし顧客名は ブック1にはあるけれど ブック2にはないということもありますので
そのときは行の横にはつけないという形をとります。

ブック1が元となるデータになります。


ブック1には

A列    B列     C列 

三上  111111  Aランク

佐藤  111112  Bランク

菊池  111113  Cランク



ブック2には

A列    B列    C列         

三上  800000円  7月29日

佐藤  7000円    7月3日
 
高橋  50000円   7月7日


作りたい最終データ下記のような形となります。


A列    B列      C列    D列    E列     

三上  111111  Aランク  80000円  7月29日

佐藤  111112  Bランク  7000円    7月3日

菊池  111113  Cランク


ブック2の高橋さんは後ろ付ける人がいないのでつけません

以上お手数をおかけしますがご回答をお待ちしております。

こんばんは遅い時間にすいません。

46000件のエクセルデータ名寄せを明日の午前9時までに
完了しなければなりません、、、こちらの勝手な都合ですみませんが



どうかお教えください。
異なるブックにあるデータで顧客名だけが同一となっています。
同一の顧客名のあとに異なるデータをそれぞれの行の⇒に
くっつけたいです。
ただし顧客名は ブック1にはあるけれど ブック2にはないということもありますので
そのときは行の横にはつけないという形をとります。

ブック1が元となるデータになります。


ブ...続きを読む

Aベストアンサー

もっとも簡単な方法としては、次の通りに行います。

手順:
ブック2からシートをシート名タブをドラッグしてブック1に移動する
元々ブック1に有った方をSheet1にする
ブック2から持ってきた方のシート名をSheet2にする

D1セルに
=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:C,2,FALSE),"")
と記入
E1セルに
=IF(D1="","",VLOOKUP($A1,Sheet2!$A:$C,3,FALSE))
と記入
D1,E1をそれぞれリスト下端まで下向けにコピー貼り付ける

D:E列をコピー
その場で形式を選んで貼り付けの「値」のみ貼り付ける
ブック2から持ってきたシートはシート名タブ右クリックで削除してしまう。

QExcelで名寄せしてデータ個数を集計する方法

このような表があります。
001 山田
001 山田
002 鈴木
003 田中
004 高橋
004 高橋
005 鈴木
005 鈴木
005 鈴木
006 高橋
007 鈴木
008 鈴木
この名前(「山田」等)を基準にして名寄せをし、かつデータ個数を集計しなくてはなりません。

普通に集計をすると、
001 山田
001 山田
山田 データ個数 2
002 鈴木
鈴木 データ個数 1
003 田中
田中 データ個数 1
004 高橋
004 高橋
高橋 データ個数 2
005 鈴木
005 鈴木
005 鈴木
鈴木 データ個数 3
006 高橋
高橋 データ個数 1
007 鈴木
008 鈴木
鈴木 データ個数 2
・・・という具合になりますが、番号(001等)の枠を超えて名寄せしたいのです。

希望する集計結果としては、
001 山田
001 山田
山田 データ個数 2
002 鈴木
005 鈴木
005 鈴木
005 鈴木
007 鈴木
008 鈴木
鈴木 データ個数 6
003 田中
田中 データ個数 1
004 高橋
004 高橋
006 高橋
高橋 データ個数 3
・・・という表示になるようにしたいのです。(番号も必要データなので消去せずに残したいです)

今までは、番号&名前レベルでまず集計し、あとは検索して同じ名前があればカット&ペーストという非常に面倒な作業をマニュアルでしてきました。
何かもっと楽にできる方法をご存知の方はぜひ教えてください。

このような表があります。
001 山田
001 山田
002 鈴木
003 田中
004 高橋
004 高橋
005 鈴木
005 鈴木
005 鈴木
006 高橋
007 鈴木
008 鈴木
この名前(「山田」等)を基準にして名寄せをし、かつデータ個数を集計しなくてはなりません。

普通に集計をすると、
001 山田
001 山田
山田 データ個数 2
002 鈴木
鈴木 データ個数 1
003 田中
田中 データ個数 1
004 高橋
004 高橋
高橋 データ個数 2
005 鈴木
005 鈴木
005 鈴木
鈴木 データ個数 3
006 ...続きを読む

Aベストアンサー

 姓(B列)毎にデータの個数を集計したい。ただしその順序はコード(A列)順を崩したくない。このような意味ですよね。
 それであればこのような方法はいかがでしょうか。
 1行目を見出列とし、A1を「コード」、B1を「姓」とします。そして一旦最初のデータをデータ→並べ替えで最優先キーを姓、2番目のキーをコードにして並べ替えます。すると次のようになります。(なお、最初の順番を残しておく必要があるときはD列辺りに一連番号を振っておきます。)
コード 姓
004 高橋
004 高橋
006 高橋
001 山田
001 山田
003 田中
002 鈴木
005 鈴木
005 鈴木
005 鈴木
007 鈴木
008 鈴木
 C列に作業列を設けます。C1の見出しを「コード順」とでもします。
 C2に次の式を入力して、最下行までコピーします。
=IF(B2<>B1,A2,C1)  又は  =IF(B2=B1,C1,A2)

すると次のようになります
コード 姓 コード順
004 高橋4
004 高橋4
006 高橋4
001 山田1
001 山田1
003 田中3
002 鈴木2
005 鈴木2
005 鈴木2
005 鈴木2
007 鈴木2
008 鈴木2
 この表をデータ→並べ替えで最優先キーをコード順、2番目のキーをコードにして並べ替えます。すると次のようになります。
コード 姓 コード順
001 山田1
001 山田1
002 鈴木2
005 鈴木2
005 鈴木2
005 鈴木2
007 鈴木2
008 鈴木2
003 田中3
004 高橋4
004 高橋4
006 高橋4
 この段階でA1:C13を選択、データ→集計をクリック、グループの基準を「姓」、集計方法を「データの個数」集計フィールドは「姓」にチェック、でOKします。
 以上でお望みの結果が得られると思いますがいかがでしょうか。

 姓(B列)毎にデータの個数を集計したい。ただしその順序はコード(A列)順を崩したくない。このような意味ですよね。
 それであればこのような方法はいかがでしょうか。
 1行目を見出列とし、A1を「コード」、B1を「姓」とします。そして一旦最初のデータをデータ→並べ替えで最優先キーを姓、2番目のキーをコードにして並べ替えます。すると次のようになります。(なお、最初の順番を残しておく必要があるときはD列辺りに一連番号を振っておきます。)
コード 姓
004 高橋
004 高橋
006 高橋
0...続きを読む

Qエクセルで「名寄せ」と集計(個数と合計)の方法?

エクセル97です。
行数17000件以上の大きな表があります。
A列が地方(関東、東北とか)、B列が支店コード(8ABとか)、C列が支店名(大宮支店とか)、D列が社員コード(RX1234とか)、E列が社員名(山田太郎とか)、F列が社員の属性(記号でXXXとか)G列が顧客名(鈴木花子とか)、H列が購入商品種類(今回はすべて同一で仮にAAA)、I列が商品番号(0001とか)、J列に購入金額(13000とか)、K列に購入日(2003/5/10とか)
以下、AJ列までデータが入っています。

この表のG列の顧客名を名寄せし、その顧客がいくつ買ったか(=J列の購入金額の個数)、いくら買ったか(=J列の購入金額の合計)を集計し、上位ベスト100を出したいのです。ただし、顧客名は同姓同名がいるでしょうからあくまでA~C列が同一であるという条件で絞りたいのです。

データの並び替えでやろうかと思いましたが、17000件ではひるんでしまいました。
こういう場合、なにかいい方法はありませんでしょうか?

Aベストアンサー

次にような処理はどうでしょう。

1.AJ列の次の列に、A,B,C,Gの各列を結合した列AKを作る(*)
2.ピボットテーブルで、AK列をキーにして、個数と金額の合計を集計する。
3.ピボットテーブルをどっかにコピーし、ソートで上位100人を選ぶ。

*の操作:
AK1 の内容を
=A1&B1&C1&G1
とし、それをAK17000までコピーする。

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセルで、列内が同じ名前を集計する方法は?

エクセルで以下のような表を作成したとします。

      A列   B    C    D
 1行   名前   項目   金額
 2    すずき  あいう  100
 3    すずき  かきく  200
 4    すずき  さしす  450
 5    さとう  あいう  150
 6    さとう  さしす  200
 7    はやし  あいう  250 
 8    はやし  かきく  170
 9    はやし  たちつ  980

B列の名前が同じ者の、金額の合計をD列に出したいのです。
D4に すずきの合計 750、D6にさとうの合計 350、
D9にはやしの合計 1150  というふうに。
全部で100人分位、データ行数は15000ほどあるのですが
これをさっとできるようにはどのようにしたら良いのでしょうか?

Aベストアンサー

次の方法は如何でしょうか。
D2に=IF(COUNTIF(A:A,A2)=COUNTIF($A$2:A2,A2),SUMIF(A:A,A2,C:C),"")を入力→D2を選択→フィルハンドル(D2セル枠右下の■)をダブルクリック
但し、C列途中に空白がある場合、その直前までしかコピーされませんので、空白セル前のセルを下方向にコピー後、同様にフィルハンドルをダブルクリックし下さい。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

QExcelの複数ファイルの内容を一つのファイルに集計する方法について教

Excelの複数ファイルの内容を一つのファイルに集計する方法について教えてください。
各支店からの報告を集計したいのですが、同一フォームのファイル(約100ファイル)で報告されるデータを一つのファイルに集計したいと思っています。
A支店ファイルのsheet1、B支店ファイルのsheet1、・・・・を、合計ファイルのsheet1に集約したいのです。(フォームは同じで、内容は数値のみです。)
いい方法がある方、お教えください。

Aベストアンサー

フォルダー内の全エクセルファイルのデータを1シートにまとめるVBAのコードはWeb検索すれば、種々みつかります。下記はコードの若干の解説もあって良いと思います。
http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=39812&no=0&P=R&KLOG=266
問題は、「同一フォーム」の内容ですね。
データ中に各支店名が含まれていなければ、抽出時に付与しないと訳が分からなくなるし、
変に凝った様式だと単純にコピーするだけではうまくいかないし。


人気Q&Aランキング