エクセルの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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 図書カードの分配 7 2023/05/09 15:57
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Excel(エクセル) 隣り合っていないセルを まとめて税込表示したい 8 2022/09/25 14:32
- Excel(エクセル) 【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。 3 2023/03/23 17:30
- Visual Basic(VBA) VBA。壁の間隔Xミリの中に、5種類の異なる巾の板を敷き詰め、X以下でXに近い板の組み合わせを算出 6 2023/04/23 21:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel ピボットテーブルで日付...
-
エクセルで○や×の図形の集計は...
-
ピボットテーブルのことです
-
Excel 同一列内にある、同一内...
-
エクセルのフッターについて
-
勤務表の中抜け集計の関数を教...
-
エクセルの集計を数字以外です...
-
手書きアンケートの結果を取り...
-
アクセス レポート作成時に集...
-
最近とても気になり始めました ...
-
エクセルで工事台帳を作ってい...
-
エクセルで1か月分のデータから...
-
エクセルにある決められた領域...
-
エクセルの表で集計するには
-
アクセスの入力データが集計さ...
-
excel 指定の日付の指定のセル...
-
エクセルでアンケート回答者の...
-
Excelでの統計処理についての質...
-
エクセルを使用して、名前の数...
-
エクセルでアンケート表を作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ピボットテーブルのことです
-
エクセルのピポットテーブルで...
-
マクロで貼り付け位置を可変さ...
-
エクセルで○や×の図形の集計は...
-
ピボットテーブルの項目間の計算
-
エクセルの集計を数字以外です...
-
IF関数を使用した数字に、カン...
-
オートシェイプを色別に個数を...
-
パワーポイントで資料を作る時 ...
-
勤務表の中抜け集計の関数を教...
-
列を増やさずに、月だけの件数...
-
Microsoft Formsによるアンケー...
-
ピボットテーブルへの集計フィ...
-
エクセルの集計機能を横方向(...
-
Excel週ごとの集計を関数で
-
保存ブックを開かずコピーペー...
-
エクセルで数値のプラス毎とマ...
-
エクセルを使ってCSVデータを自...
-
ピボットを使ったシートに計算...
-
ピボットテーブル オリジナル...
おすすめ情報