ここから質問投稿すると、最大4000ポイント当たる!!!! >>

エクセル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件ではひるんでしまいました。
こういう場合、なにかいい方法はありませんでしょうか?

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

A 回答 (1件)

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



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

*の操作:
AK1 の内容を
=A1&B1&C1&G1
とし、それをAK17000までコピーする。
    • good
    • 0
この回答へのお礼

ありがとうございました。ピボットテーブルって使った事が無いので勉強させていただきます。
今回は、質問をかえて(簡略化して)再度投稿したところ、VBAで思った通りにできました。

お礼日時:2003/05/15 19:47

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

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

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

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

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エクセルの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から持ってきたシートはシート名タブ右クリックで削除してしまう。

Qエクセルのセルにある同じ値が何件あるかを調べたいのですが・・

教えてください。
マイクロソフトエクセルで各セルの値が何件あるかを調べたいのです。
例えば
A1セルに4300
A2セルに1500
A3   1000
A4   4300
A5   1000
・・・・・
など同じAセルに約300近くの値が入っていたとします。
この場合
4300 は 2件
1500 は 1件
1000 は 2件など「件」はつかなくて数値だけでも助かります。
代金の返金をする時に紙幣や硬貨を用意する為に同じ値がいくつあるかが知りたいです。
オートフィルタで同じ数値だけを出す方法もありますが、こちらの方法で出来ることでしたら教えて下さい。
宜しくお願い致します。
エクセルのバージョンは古くて2002です。

Aベストアンサー

こんばんは!
色々方法はあるかと思いますが・・・

一例です。

↓の画像のようにB列を作業用の列とさせてもらっています。

B2セルに
=IF(COUNTIF($A$2:A2,A2)=1,ROW(A1),"")
という数式を入れオートフィルでずぃ~~~!っと下へコピーします。

そして、D2セルに
=IF(COUNT($B$2:$B$1000)<ROW(A1),"",INDEX($A$2:$A$1000,SMALL($B$2:$B$1000,ROW(A1))))

E2セルに
=IF(D2="","",COUNTIF($A$2:$A$1000,D2))

という数式を入れ、D2・E2セルを範囲指定し、E2セルのフィルハンドルで
下へコピーすると画像のような感じになります。

尚、数式は1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、長々と書きましたが
参考になれば幸いです。m(__)m

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列>
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エクセルで、列内が同じ名前を集計する方法は?

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

      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ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

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列を削除


人気Q&Aランキング