エクセル VBA
VBAを勉強するにあたり、いつもお世話になってます。
今回教えていただきたいのは、複数項目が重複するセルの数を数える方法を教えてください。
A列 No.
B列 名前
C列 年齢
D列 カウントした数
で例えば、
A1 111
B1鈴木
C1 43
C1まで入力した際にマクロ実行しD1 1と表示。次に
A2 222
B2 田中
C2 39
実行
D2 1 D1はそのまま1
A3 111
B3 鈴木
C3 43
実行
D3 2 D1は1、D2は1のまま
というものです。わかりにくい説明ですが、ご教授いだきたいです。よろしくお願います。
No.3ベストアンサー
- 回答日時:
すでに回答はでてますが、もっとも素直な方法です。
Public Sub 重複カウント()
Dim maxrow As Long
Dim wrow As Long
Dim ctr As Long
maxrow = Cells(Rows.Count, 1).End(xlUp).Row
ctr = 0
For wrow = 1 To maxrow
If Cells(wrow, 1).Value = Cells(maxrow, 1).Value And _
Cells(wrow, 2).Value = Cells(maxrow, 2).Value And _
Cells(wrow, 3).Value = Cells(maxrow, 3).Value Then
ctr = ctr + 1
End If
Next
Cells(maxrow, 4).Value = ctr
End Sub
No.5
- 回答日時:
こんにちは!
横からお邪魔します。
No.4さんも仰っているようにCOUNTIFS関数で対応できますが、
今回はVBAでの方法をご希望だというコトなので、一例です。
↓の画像のような配置(1行目は項目行)になっているという前提です。
Sub Sample1()
Dim myDic As Object
Dim i As Long, myStr As String
Set myDic = CreateObject("Scripting.Dictionary")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
myStr = Cells(i, "A") & "_" & Cells(i, "B") & "_" & Cells(i, "C")
If Not myDic.exists(myStr) Then
myDic.Add myStr, 1
Else
myDic(myStr) = myDic(myStr) + 1
End If
Cells(i, "D") = myDic(myStr)
Next i
Set myDic = Nothing
End Sub
こんな感じでも大丈夫だと思います。m(_ _)m
ありがとうございます。
いろんな方法が、あるのですね!!こちらのコードも一つ一つ見て勉強させていただきます!ほんとうにありがとうございます!
No.4
- 回答日時:
既に回答は出ていますけど、その後質問者さん自身で目的の、
>C1まで入力した際にマクロ実行しD1 1と表示
のイベントに作り替えられると言う事でしょうか?
その場合なら私のはお古なので検証不可能ですが、既出ている『COUNTIFS関数』で『先頭行から現在編集完了した行』までを複数条件でカウントすれば可能のように思います。
ただ、私には検証できません!けど。
若しくはマクロの実行条件として『C列への入力完了後』とは違ってましたかね?
ありがとうございます。
実は、 AからCまでの各行毎に入力をマクロでしていて、その結果をD列に表示といったかたちにしたいと思っております。こちらで教えいただいたものを参考に一つのマクロを作成出来ればと考えてますので教えていただけると助かります。
No.1
- 回答日時:
こんにちは
A、B、C列の値全てが同じ場合に重複とカウントするということと解釈しました。
こんなのではいかがでしょうか?
Sub Sample()
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Offset(, 3).FormulaLocal = _
"=IF(A1="""","""",COUNTIFS(A$1:A1,A1,B$1:B1,B1,C$1:C1,C1))"
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) エクセルを活用した受注表作成の中で関数・数式を教えてください。 3 2022/07/23 08:14
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- Excel(エクセル) エクセルでフィルタ後の列の重複を回避したい 6 2022/10/13 12:50
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA一覧取得 再投稿
-
VBA指定行削除
-
VBA一覧取得
-
エクセルVBAについて
-
VBA ユーザーフォーム ボタンク...
-
VBA 複数のエクセルから一つの...
-
【ExcelVBA】値を変更しながら...
-
VBAに詳しい方教えてください。
-
VBA listBoxについて
-
Vba 実数および実数タイプの変...
-
現在のブックを閉じないで、マ...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
VBA マウスクリックとキーボー...
-
VBA レジストリの値の読み方に...
-
2つのマクロでチェックボックス...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ExcelのVBAコードについて教え...
-
【マクロ】1つのマクロの中に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報