VBA初心者です。教えて下さい。

シート1に
名前1 名前2 金額3
AAA1 AAA1 1
AAA1 AAA2 2
AAA2 AAA1 1
AAA2 AAA1 3
AAA2 AAA2 1
AAA1 AAA1 4
AAA1 AAA2 5
AAA2 AAA1 6
AAA2 AAA2 7
AAA2 AAA2 6

というデータがあるのですが、

名前1,名前2をKeyに配列等を使用して金額3を集計したいと思います。

AAA1 AAA1 5
AAA1 AAA2 7
AAA2 AAA1 10
AAA2 AAA2 14

宜しく御願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/11/06 11:04:50
  • 終了:2012/11/07 12:54:54

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/11/07 05:48:10

Excelのシートにあるデータが対象であるならば、
配列に取り込んでから扱うのではなく、
rangeオブジェクトとしてそのままの形で取り扱うのが楽です。

rangeオブジェクトであれば、WorksheetFunction.SumProductや
WorksheetFunction.SumIfsなどが使えます。
http://msdn.microsoft.com/en-us/library/office/ff193011.aspx
http://msdn.microsoft.com/en-us/library/office/ff195377.aspx

WorksheetFunction.sumのようにスカラや配列でも利用可能なものもあります。
http://msdn.microsoft.com/en-us/library/office/ff838410.aspx

関数の一覧は下記。
http://msdn.microsoft.com/en-us/library/office/ff822194.aspx

以上すべてのリンクは2010バージョンのものですが、
WorksheetFunctionは2000などの古いバージョンにも備わっており、
VBAから数多くのワークシート関数を使うことが出来ます。
SumIfsのような新しい関数は新しいバージョンでなければ使えませんけど…。

  • id:SALINGER
    VBAじゃなくてもワークシート関数でできます。
    Excel2003以前ならsumproduct
    2007以降ならsumifsでできます。
  • id:sinrabanshyo
    そうですね。
    関数での方法はしっていたのですが、配列を使った集計でどうすればいいのかわかりませんでしたので。。。
  • id:Silvanus
    主目的は「配列(Array?)で処理すること」なのですか?
    単に「VBAで処理すること」が目的ではないんですよね?
  • id:Silvanus
    もしかして、こういうことを頭に描いていらっしゃるのでしょうか?
    この↓ウェブページ下三分の一辺りにある「2つの条件で合計する」
    http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_dictionary.html

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません