質問: エクセルにおいて、毎月10万件ほどの大量のデータ(月により件数が変動する)を処理するため、マクロの使用を考えております。 例えば以下のような場合、どのようなマクロを作成したらよいのかがわかりません。 月によりデータ件数が変わるため、データの処理範囲(最終行)は変数として扱いたいです。(最終行を探してそこまで計数するというイメージ) □やりたいこと A列:商品名 B列:種別 C列:(生産者である)農園名 D列:仕入伝票番号(同一伝票番号は1枚と考える) の場合、 1.納品がある「農園名」は毎月固定ではないため、C列の農園名を抽出してS列に表示する。(結果の「項目」に該当) 2.「農園(C列)別の果物(B列)が含まれた仕入伝票(D列)の枚数」をS列を基準としてT列に求めえる。(結果の「値」に該当) 3.データ量が多いので最も計算が速くできるマクロで実行したい。(dictionary?) □サンプルデータ(C列・D列は今回は順番に並んでいますがデータはバラバラに入力されています。「あ農園の次にう農園、その次にまたあ農園」や伝票番号も小さい数値から順とは限りません。) 行 数) / A 列 / B 列 / C 列 / D 列 / 行01) / 商品名 / 種 別 / 生産者 / 伝番号 / 行02) / りんご / 果 物 / あ農園 / 11111 / 行03) / レタス / 野 菜 / い農園 / 22222 / 行04) / いちご / 果 物 / い農園 / 33333 / 行05) / りんご / 果 物 / う農園 / 44444 / 行06) / ごぼう / 野 菜 / う農園 / 44444 / 行07) / ごぼう / 野 菜 / う農園 / 55555 / 行08) / みかん / 果 物 / え農園 / 66666 / 行09) / いちご / 果 物 / え農園 / 66666 / 行10) / レタス / 野 菜 / え農園 / 77777 / □変動項目 1.データ件数(=行数) 2.商品名(A列)の種類数(これが野菜か果物かはVLOOKUP関数でB列に表示させている) 3.生産者(C列)の農園数 4.伝票の枚数(必ず1行に対して何らかの伝票番号は入っているが、同農園からの仕入の場合、同じ伝票番号に複数の商品が記載されているため、「行数=枚数」とはならず、「行数>=枚数」で枚数自体は毎月変動します。 ※B列の種別は毎月「果物」「野菜」の2種類しかありません。 □求めたい結果(果物の伝票枚数) 行 数) / S 列 / T 列 / 行01) / 生産者 / 伝枚数 / 行02) / あ農園 / 1 / 行03) / い農園 / 1 / 行04) / う農園 / 0 / 行05) / え農園 / 1 / の「行02)」以降を結果として表示させる □結果解説 あ農園:伝票11111の1枚=1 い農園:伝票33333の1枚=1 う農園:果物を含む伝票がないため0枚=0 ※0を表示させる え農園:伝票66666が2項目あるが、同一伝票のため1枚=1 □マクロを使わなかったときの計算 1.E列に 「B&C&D]のキーを作成 2.F列に 「=if(B@="野 菜”,0, if(countif(E$2:E@,e@)>1,0,countif(E$2:E@,E@)))」 を入力(@は行数:2行目の時はB@はB2)) 3.S列にC列を貼付、重複の削除 4.T列に 「=sumifs(F:F,B:B,"野 菜",C:C,S@) (@は行数:2行目の時はS@はS2)) ☆今回の質問事項 そもそもこの要望通りのマクロが組めないので、実際にマクロを組んでいただき、次回から似たようなケースの場合に自らが組めるよう、その考え方を教えていただきたい。(マクロの式の脇に「’〇〇」で記載していただけると助かります。) できるだけ詳しくと思い長くなったうえ、わかりづらい表現やサンプルで申し訳ありません。 なにとぞよろしくお願いいたします。
回答: マクロ? フィルターオプションで 検索条件を 種別 果物 ⇑ として 抽出範囲セルに 生産者 伝番号 ⇑ のみを入力して指定 □重複するレコードは無視する ⇑ にチェックして別範囲に一旦抽出して 抽出結果を統合機能でカウントすれば数手順で集計できると思うけど?