
エクセルのsheet1にこのような表があります。
A B C D E
1 名称 金額
2 あああああ 10000
3 あああああ 12000
4 あああああ 9000
5 いいいいい 9500
6 いいいいい 11000
7 ううううう 15000
8 えええええ 12000
9 おおおおお 10000
10 おおおおお 14000
11 かかかかか 13000
12 ききききき 800
・
以下多数
この表で、それぞれ同じ名称の個数と合計金額を求めたいのです。
たとえば「ああああ」なら個数 3、合計 31000 と、D4とE4に、
「いいいい」なら個数 2、合計 25000 と、D6とE6に入れたいのです。
実際の表はデータ件数が1万件を越えますのでいちいち手で入れるわけにはいきません。
VBAでやるにはどう記述したらいいでしょうか?
どうかお助けください。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
A列は名称でB列は金額でよろしいんですよねというか
その前提で書きましたが。
デバッグはしてません。またオーバーフロー等あると思うのでそのあたりはご自分で。
Sub 集計()
Dim i, MyTotal As Double, MyCount As Double
MyTotal = Sheets(1).Range("A2")(1, 2)
MyCount = 1
For i = 2 To 65535
If Sheets(1).Range("A2")(i) = "" Then Exit For
If Sheets(1).Range("A2")(i) = Sheets(1).Range("A2")(i - 1) Then
MyTotal = MyTotal + Sheets(1).Range("A2")(i, 2)
MyCount = MyCount + 1
Else
Sheets(1).Range("A2")(i - 1, 4).Formula = MyCount
Sheets(1).Range("A2")(i - 1, 5).Formula = MyTotal
MyTotal = Sheets(1).Range("A2")(i, 2)
MyCount = 1
End If
Next i
Sheets(1).Range("A2")(i - 1, 4).Formula = MyCount
Sheets(1).Range("A2")(i - 1, 5).Formula = MyTotal
End Sub
No.4
- 回答日時:
1行目が項目行、2行目以降がデータ行として
Sub 集計()
Dim i As Long
Dim x As Long, y As Long
y = 1
For i = 2 To 12000'(ここはデータの最終行にする)
With Sheet1
If .Range("A" & i) <> .Range("A" & i - 1) Then
.Range("D" & i - 1) = i - y
.Range("E" & i - 1) = _
Application.WorksheetFunction.Sum(.Range("B" & y & ":" & "B" & i - 1))
y = i
End If
End With
Next i
End Sub
わたしも初心者なのでVBAの書き方が悪いかもしれませんがテストして動きました。
No.3
- 回答日時:
ピボットテーブルを作成してみてはいかがですか?
慣れれば簡単に集計表が作成できると思います。
どうしても自動化させたければ
作業をマクロに記録させるのが簡単なのでお勧めです。
・方法
データ(D)→ピボットテーブルとピボットグラフレポート(P)を実行すると
ウィザードが表示されますので、集計したいデータの範囲を指定してください。
次に、集計表を作成したい場所を指定します。
行フィールドに名称をドラッグし、データアイテムに金額を2回ドラッグします。
名称、データ(合計:金額、合計:金額2)の集計表が作成されますので
「合計:金額2」となっている項目を選択し、右クリックでショートカットメニューを表示させます。
フィールドの設定(E)を実行し、集計の方法(S)の「データの個数」を選択してください。
項目の位置を変えたかったりした場合は
項目を選択してドラッグしてください。
No.1
- 回答日時:
データ件数が 1万件ぐらいあるならば、アクセスとか
使ったほうがいいですよ。
エクセルだけで やりたい場合は
COUNTIF とか SUNIF とか使えばできます。
使い方は、エクセルで入力するときに出てくるでしょう。
VBAでなくてもできます。
この回答への補足
ありがとうございます。
アクセスですよねえ、やっぱりこういうデータ量だと。
でも残念ながらアクセスは難しくて使った事が無いんです。
関数でやってみようかとも思いましたが、この作業はこれからよく出てくると思われるので、できればVBAでの処理をしたかったのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Formsによるアンケー...
-
エクセルのピポットテーブルで...
-
エクセルの集計を数字以外です...
-
保存ブックを開かずコピーペー...
-
マクロで貼り付け位置を可変さ...
-
エクセルで数値のプラス毎とマ...
-
勤務表の中抜け集計の関数を教...
-
ある審査の結果を迅速にエクセ...
-
集計表の見方について
-
エクセルの散布図のX軸に文字...
-
エクセルの散布図グラフで、横...
-
グラフの横・縦項目が全部表示...
-
Excelで近似曲線の数値をセルに...
-
エクセルでグラフを作成する際...
-
エクセル グラフはあるけれど...
-
エクセルのグラフ作成で軸を等...
-
EXCELでX軸が時間のグラフを作...
-
Excel:別シートにグラフを貼り...
-
積み上げ棒グラフのマイナスデータ
-
エクセル グラフの削除してし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Formsによるアンケー...
-
IF関数を使用した数字に、カン...
-
エクセルのピポットテーブルで...
-
ピボットテーブルのことです
-
エクセルの集計を数字以外です...
-
勤務表の中抜け集計の関数を教...
-
マクロで貼り付け位置を可変さ...
-
ピボットテーブルの項目間の計算
-
エクセルで数値のプラス毎とマ...
-
オートシェイプを色別に個数を...
-
ピポットテーブルの参照元を別...
-
Excel週ごとの集計を関数で
-
エクセル ピボットテーブルを更...
-
エクセルのフッターについて
-
Excelの小計機能をVBAでやりた...
-
セルの中の文字を削除したい
-
コンパイルエラーについて
-
エクセル sumif 検索条件 2020/...
-
goo使いにくくなってません?
-
エクセルで○や×の図形の集計は...
おすすめ情報