- ベストアンサー
エクセルマクロについて
お世話になります。 エクセルのマクロについて不慣れなためご質問させてください。 下のような表がありこれを集計して新しく表にしなおしたいと思っています。 1列目 2列目 A XXXX B XXXX C XXXX A XXXX A XXXX B XXXX 1列目の同じ文字列を数えて表を作りなおしたいのです。 1列目 2列目 A 3 ←数えた回数を入れたいと思います B 2 C 1 初めの表はマクロで作成出来たのですが2つめの表を作成する エクセルマクロを作成したいと思っています。 サンプルを頂けると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
各列一番上の1行目のセル(A1セル)には列のタイトルが記入してあって,実際のデータは2行目以下(A2以下)に記入されているとします。 ぐるぐる回して一個ずつ数えるとかの効率の悪いことはしないでみます。 sub macro1() worksheets("Sheet1").range("A:A").advancedfilter _ action:=xlfiltercopy, _ copytorange:=worksheets("Sheet2").range("A1"), _ unique:=true with worksheets("Sheet2") .range("B1") = "個数" with .range("B2:B" & .range("A65536").end(xlup).row) .formula = "=COUNTIF(Sheet1!A:A,A2)" .value = .value end with end with end sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
>サンプルを頂けると助かります。 丸投げするのか。課題は簡単なことで自分で考えること。 (1)関数でも出来る (2)ピボット操作でも出来る ーー (1)関数類似の方法でVBAでもCOUNTIF関数が使えるからそれを使う。 A,B、C,・・・の1セットが何処かの列にほしいが、これをVBAで作るのも1つに課題だ。 (2)少なければA,B、C・・ごとの配列を持って、該当の配列に+1し、足しこんで行く (3)A列でソートして、Aの続く行の間は+1してゆき、変わったときに別シート(や別セル範囲)にAなどと件数を書き出す。 おわりの行まで繰返す(ソート法)。 (3)ピボットもVBAで実行できる (4)アクセスならもっと簡単(ただし習得には時間がかかる) >エクセルのマクロについて不慣れなためご これはVBAコード云々の問題だけではない こんな課題は関数でも出来るのに、VBAに首を突っ込んだから、VBAの勉強ですることに関心があるのだろうが、もっと別の面で勉強することがありそうに思う。それはロジック(データを扱う構想というべきか)というもので、どういう考えで処理していくかを組み立てる力だ。 わかりやすさ(略等しい=コード行数も少ない)と、処理時間に無駄が無いか(無駄な繰り返しをしてないか)どうかが良いかどうかの決め手。 特に前後関係・連続関係を処理するロジックは上記(3)が有効。 これは割合、使用する言語に左右されない場合が多い。これの習得は経験を積むしかない。常時これに興味を持って居ないと、課題をやろうとするときに間に合わない。
お礼
ご回答ありがとうございます。 いつも関数で処理したりしてたのですが今回何とかVBAって頭が一杯でした。 VBAだけなぜか苦手意識があって・・ 今後の為に常に興味をもって頑張ります。
- FEX2053
- ベストアンサー率37% (7995/21381)
そう言う集計はマクロなんぞ使わなくても、ピボットテーブルで一発で可能なんですけど・・・? http://hamachan.info/excel/piboto.html
お礼
確かにピボットテーブルで可能ですよね。 マクロで実行することしか頭になかったもので、すみません。 ご回答ありがとうございます。
お礼
ありがとうございます。 参考書とつきあわせながら確認させて頂きました。 お礼が遅くなり申し訳ありません。 ご回答ありがとうございました。