データ一覧には、品目コード(数百あり)、所属名(50程度あり)、数量が入っていますがそれぞれの品目コード毎に数量の多い所属順にランク付けしたいのですが、RANK関数を使うと品目コード毎に範囲指定が必要になりますよね?
また、品目コード、数量(降順)でソートをかけて順位を付けても、品目コード毎に1~の順位は付けられません。これってエクセルでは無理ですか。困っています教えてください。

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

A 回答 (2件)

VBAが記述できるという前提ですが、以下のような記述を行う方法を思い付きましたので記載いたします。



1.現在のデータベースから、所属コード別のデータベース(SheetまたはBook別に管理)にデータを移行するVBAを記述
2.所属コード別のデータベースから品目毎の数量を計算して一覧表に貼付するVBAを記述
3.一覧表をデータ別に並べ替えてランキングを出すVBAを記述

言うのは簡単ですが、実際にやることの方が困難だと思います。私の管理しているのは、1000程度の商品と20名の人間毎ですから、それほど困難ではないと思いますが、それでもVBA制作に1ヶ月くらいを要しました。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
残念ながらVBAの知識がありません。今後、勉強(年齢的に無理?)が必要になります。重ねて御礼。

お礼日時:2002/01/22 12:44

理論的には可能だと思いますが、取り扱いデータが余りのも多いのでそこをどうクリアーするかがが問題となるでしょう。



1.『データー』→『ピポットテーブル レポート』機能を使い、品目コード毎の所属名毎の数量一覧を出します。
2.上記を決められたシートに貼るようにして、その結果から品目コードの毎の所属名ランキングを出します

データベースの形状などにより困難かもしれませんが、やってやれなくはないと思います。但し、気になるのは品目コードと所属名の種類が多いことで、これが少なければもっと簡単な方法もあると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。教えられたことを研究してみます。

お礼日時:2002/01/10 11:05

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

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

関連するカテゴリからQ&Aを探す

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

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

Q順位付け

お願いします。順位付けのことで詰まっています。
1位から10位までの月順位を出しますが、同点の場合年間順位で順位を決定しています。
  
    年順位  月順位  修正順位
      2     1      1
      7     2      2 
     10     3      10
      9     3      9 
      8     3      8
      4     3      5       
      1     3      3     
      5     3      6
      3     3      4
      6     3      7

同点が8個もあり、自動的に年順位を参照して順位決定できる方法
がわかりません。RANK関数の応用ができません。
よろしくお願いします。



 

Aベストアンサー

 月順位の数値が存在している行には、必ず年順位も存在している場合にのみ有効な方法です。
 今仮に、
「年順位」と入力されているセルがA1セル、
「月順位」と入力されているセルがB1セル、
「修正順位」と入力されているセルがC1セル、
であるものとし、
A列とB列の2行目から11行目にかけて順位が入力されているものとします。

 その場合、C2セルの修正順位を求める数式の一例は、次の様になります。

=$B2+SUMPRODUCT(($A$2:$A$11<$A2)*($B$2:$B$11=$B2))

 この式を、エラー防止と、行数の変化に対応するように、拡張すると、次の様な数式となります。

=IF(COUNT($A2,$B2)=2,$B2+SUMPRODUCT(($A$1:INDEX($A:$A,MATCH(9^9,$B:$B))<$A2)*($B$1:INDEX($B:$B,MATCH(9^9,$B:$B))=$B2)),"")

 C3以下の修正順位に関しては、C2セルに上記の数式を入力してから、C2セルをコピーして、C3以下に貼り付けるだけで表示されます。

 月順位の数値が存在している行には、必ず年順位も存在している場合にのみ有効な方法です。
 今仮に、
「年順位」と入力されているセルがA1セル、
「月順位」と入力されているセルがB1セル、
「修正順位」と入力されているセルがC1セル、
であるものとし、
A列とB列の2行目から11行目にかけて順位が入力されているものとします。

 その場合、C2セルの修正順位を求める数式の一例は、次の様になります。

=$B2+SUMPRODUCT(($A$2:$A$11<$A2)*($B$2:$B$11=$B2))

 この式を、エラー防止と、行数の変...続きを読む

Qaccessで順位の合計の順位の求め方

[T_成績]というテーブルの中に
   フィールド名:[出席番号]
   フィールド名:[得点]
というフィールドがあるとします。
まず、新規にクエリーを作ります。これはただの選択クエリーで、[T_成績]テーブルを1個だけ追加します。
クエリーグリッドのフィールド欄に[出席番号]と[得点]を追加します。
最後のフィールドに順位を求める式を入力します。式は以下の通りです。
  順位: (select count(*) from T_成績 as T_成績_1 where T_成績_1!得点>T_成績!得点)+1
こうすれば順位が求められるのですが例えば国語と数学と英語の順位の合計の低い順に順番を求めたいのですが(単純に合計の順位ならでるのですが)、順位の合計の順位というものがうまくいきません。本当に困っていますまる3日いろいろ試したのですがうまくいきません。今日も徹夜でした、よろしくお願いします。

Aベストアンサー

>循環参照が発生していますというメッセージが出てしまうんです。

ということは、作業用のテーブルを作ったほうがいいかも。
#2で作成したクエリーを、テーブル作成クエリーにして作業用テーブルを作成して、それに対して新たに選択クエリーを作成してみてください。

Q【Access】順位を付けたい

お世話になります。

Accessで順位付けを行いたいのです。
サブクエリでやってみたのですがレコード数多く遅くなってしまうのでVBAで行いたいのですが、
VBAが初心者でうまく出来ません。

『コード』ごとで『半期』の降順に以下のように作成したいのです。

テーブル名 『ランク』

コード(テキスト型)     獲得数(数値型) 期ごと(テキスト型)    順位
A123             55   2010上期         1
A123            0   2010下期   2
A123     269    2009上期   3
A123         1   2009下期     4
A123        789    2008上期     5
A123        101   2008下期     6
------------------------------------------------------------
C456      10    2010上期       1
C456       0    2010下期       2
C456      776    2009上期       3
C456       0    2009下期       4
C456       0    2008上期       5
C456       0    2008下期       6

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

お世話になります。

Accessで順位付けを行いたいのです。
サブクエリでやってみたのですがレコード数多く遅くなってしまうのでVBAで行いたいのですが、
VBAが初心者でうまく出来ません。

『コード』ごとで『半期』の降順に以下のように作成したいのです。

テーブル名 『ランク』

コード(テキスト型)     獲得数(数値型) 期ごと(テキスト型)    順位
A123             55   2010上期         1
A123            0   ...続きを読む

Aベストアンサー

No.1 の回答のコードにいつくか間違いがありましたので、下記に訂正します。

Dim rs As DAO.Recordset
Dim cd As String, i As Integer

Set rs = CurrentDb.OpenRecordset("SELECT * FROM ランク ORDER BY コード, 期ごと DESC")

Do Until rs.EOF

  If cd = rs!コード Then
    i = i + 1
  Else
    i = 1
    cd = rs!コード
  End If
  rs.Edit
  rs!順位 = i
  rs.Update
  rs.MoveNext
Loop

rs.Close
Set rs = Nothing

QAcceseからCSVファイルに吐き出した後、EOFコード(&h1A)を付けたいですが

お世話になります。
 早速ですが、表題の状況を詳しく言うと、AcceseファイルのテーブルをCSVファイルにエクスポートしています。エクスポートの最終段階でEOFコード(16進の&h1A)を付けたいですがどうすれば簡単にできるのですか?VBAを使わなければできないんですか?
 よろしくお願いします。

Aベストアンサー

>OSのcopyコマンドというのは素人なんでよくわかりませんがMS-DOSからのコマンドになるんですか?

そういうことです。ちょっと解りづらい書き方をしてしまったようで。


#2の方が書いているように、あらかじめEOFが入ったファイルはあらかじめ準備しておく必要はなさそうですね。

Accessのマクロで行うのであれば、”アプリケーションの実行”で#2の方のコマンドを入れればOKです。

Q社内コードをソースコードに直書きすることについて

業務システムを自社で構築、メンテをしていますが、ソースの中の条件文などに社内コードを直に書くのは間違いでしょうか?保守性を考え、そういったものは全てDBのフィールドを追加して管理すべきと言う人もいますが、個人的には頻繁に条件の変更があるのならば(例えば品目コード等)DBで管理すべきでしょうが、なんでもかんでもDBで管理するのは抵抗があります。
皆様はどのようにされているのでしょうか?
また、DBで管理するデメリットがあれば教えていただけますでしょうか?

Aベストアンサー

昔からよくある話ですね。
sinsouさんのお考えも分かります。
ところがです。
sinsouさんがその業務システムのメンテを最後まで担当するなら、それでもいいと思います。
しかし、仕事はいつ別な人が担当するか分からないですね。場合によってはsinsouさんが転職のため退社してしまうかもしれません。
ですから、会社ではいろんなリスク・ヘッジを考えるのです。別な担当者が急にその社内コードの変更作業をしなければならないとすれば、どこを直せばいいのか苦労しますね。最終的にソースコードの中に入っていたと分かるでしょうが、DBやテーブルに格納してあれば簡単に見つけられますね。
業務システムによっては40年位動いているものもあります。
次世代の担当者のためにDBなどに統一していた方がいいのではないでしょうか。


人気Q&Aランキング

おすすめ情報