質問: excel表を集計するプログラム a列に複数の項目(重複もあり)があります。b列に数字が入っています。 a列の項目で重複しているものはmergeします。 それと同時にb列に入っていた数字を合計したいと思っています。 [具体例] 処理前 → 処理後 aaa 1 aaa 7 bbb 3 bbb 7 ccc 4 ccc 4 bbb 4 ddd 2 ddd 2 aaa 5 aaa 1 こんな感じの処理をvbaでしたいと思っています。 教えてください。 よろしくお願いいたします。
回答: 質問者がどれだけの経験者かわからないが、エクセルの経験が余りないのに難しい課題をやろうとしているように思う。 >merge cellmerge(セル結合)のことか、プログラムでいうmergeのことか。難しい英語を使わず正確に。 ここではセル結合の意味として、セルの結合という発想でなく、 a.同じ商品(仮に質問のaaaを商品名としての例)は集計すると考える b。別シートに結果を出す という風に考えるのが良いと思う。 ーーー 既出のピボットテーブルを、操作でやるのが良いのではないですか。 vbaを使わなくても。勉強するなら別ですが。 ーー 既出のvbscriptのdictionaryなど概念習得が難しいと思う。 ーー 私なら、vbaでなら、元のシートを商品でソートし、商品の切れ目までを足し算して、書き出してやります(ソート法) sub macro1() d = range("a65536").end(xlup).row range("a1:b" & d).select selection.copy sheets("sheet2").select activesheet.paste application.cutcopymode = false selection.sort key1:=range("a1"), order1:=xlascending, header:=xlguess, _ ordercustom:=1, matchcase:=false, orientation:=xltoptobottom, sortmethod _ :=xlpinyin, dataoption1:=xlsortnormal range("c14").select '---以上は第1行目以外はマクロの記録 k = 1 m = cells(1, "a") t = 0 for i = 1 to d if cells(i, "a") = m then t = t + cells(i, "b") else cells(k, "f") = m cells(k, "g") = t k = k + 1 m = cells(i, "a") t = cells(i, "b") end if next i cells(k, "f") = m cells(k, "g") = t end sub for以下は常套手法です。