• ベストアンサー

EXCELで作表する複数の顧客の最新情報のみをピックアップする方法

お手数ですが、次の点をご教示ください。 MS-Excelを使用し、無限に増えていく顧客(例えばX1, X2, X3, ....)につき、ワークシートで管理する場合、全ての取引の初めからある時点までに、それぞれの顧客(X1, X2, X3, ..., Xi)と複数の回数にわたって取引を行なっていた場合、それぞれの顧客(X1, X2, X3, .., Xi)に関して、例えば直近の取引の数値のみ(あるいは例えば過去からの取引の最大値のみ)を、自動的に引き出して、それぞれの顧客について求めた値(例えば、a1, a2, a3, ..., ai)の全部を合計するというように、MS-Excelの関数を使い、ある期間に繰り返し発生するそれぞれの顧客の特定の属性を、自動的に引き出して合計させるということは可能でしょうか?

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

  • ベストアンサー
noname#27115
noname#27115
回答No.3

> やはりVBAを使った方がよいのですか。 と言うか、そうでないと無理だと思います。今回のはデータベース処理になるわけですが、その場合、AccessのVBAの方が楽だと思います。 もっとも、ExcelでAccessの持っている機能を使うこともできますが、処理が遅くなると思います。 ただ、ここにはすばらしい人が多いので、Excelだけで解決してくれる人も、いるかもしれません。

ESME
質問者

お礼

ご丁寧にありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

回答までは程遠いですが、ある取引先の最新の取引日付けを関数を使って出す方法までやれました。 本当はVBAを駆使しないと、またはSQL(アクセスなど)を 使わないと、複雑になるのではないかと言う例示をした積もりです。 (サンプルデータ) 山田産業 2003/5/31 大阪工業 2003/10/12 東京雑貨 2003/2/20 山田産業 2003/3/21 大阪工業 2003/9/14 東京雑貨 2003/10/23 大阪工業 2003/5/1 山田産業 2003/10/3 東京雑貨 2003/7/31 大阪工業 2003/8/24 (関数式) C1に=IF(MATCH(A1,$A$1:A1,0)=ROW(),A1,"")といれ、 データ最下行まで複写する。 C列の値をC列に複写し関数式を消す。 (手作業) 降順にソートする。取引先の名前を上に集める。 山田産業 大阪工業 東京雑貨 になる。 (関数式) =MAX(IF($A$1:$A$10=C1,$B$1:$B$10,""))といれて CtrlとShiftを押しながらEnterキーを押す。 配列数式です。 (結果)C1:D3 山田産業 2003/10/3 大阪工業 2003/10/12 東京雑貨 2003/10/23 --- 最新の日付けの計数(上例には設けてない)が取れる関数が判れば、それらを足せば、質問の答えになりますが今は残念ながら判りません。

ESME
質問者

お礼

ありがとうございます。 imogasiさんのお答えによると、MS-Excelの関数を使った場合、求める結果を得るまでに複数のステップが必要になりますね。 お寄せいただいた例を試してみます。

noname#27115
noname#27115
回答No.1

VBAを使えば何でも可能だと思いますが、、ご自身の修得度とどのような管理をされているかを書かれた方がいいと思います。 VBAをご自由になされる方だと、ある程度のヒントをもらっただけで後はご自身でできると思いますが、そうでない場合、ズバリのプログラムを提供されないと組み込みは難しい気もします。 ただ、この手はExcelよりもAccessでやった方が簡単です。

ESME
質問者

お礼

早速のご回答ありがとうございました。 やはりVBAを使った方がよいのですか。 これから少しVBAを勉強して、お尋ねした解決方法を探ってみます。 ありがとうございました。

関連するQ&A