質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1779閲覧

カウントした行数の内容をMsgBoxに表示したい(VBA)

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/09 07:09

編集2021/12/09 09:14

前提・実現したいこと

条件に一致したカウントした【セルの値】と【該当の行数】をMsgBoxに表示させたいです。

現状は、カウントした件数のみは自身で表示させる事ができました。
可能であれば下記のコードに追記(修正)する部分をご教示いただけますと幸いです。

◆完成イメージ
作成が完了しました。

回答数:2

15行目:123456
30行目:789012

該当のソースコード

VBA

1Sub 会員番号が含まれていない回答数のカウント() 2 3 Dim x As Long 4 Dim i As Long 5 Dim count As Long 6 count = 0 7 8 With Sheets("rawdata") 9 x = .UsedRange.Cells(.UsedRange.count).Row 10 If clear_flag = True Then 11 Sheets("rawdata").Range("B2:B" & x).Interior.Pattern = xlNone 12 End If 13 For i = x To 2 Step -1 14 If Sheets("●●/●●実施").Range("A:A").Find(What:=.Cells(i, 2), LookAt:=xlWhole) Is Nothing Then 15 count = count + 1 16 End If 17 Next i 18 End With 19 20 '結果の表示 21 MsgBox "作成が完了しました。" & vbCrLf & vbCrLf & "回答数:" & count 22 23End Sub

▼追記

VBA

1Sub 回答者の重複をカウント() 2 3 Dim sh1 As Worksheet 4 Dim maxrow As Long 5 Dim wrow As Long 6 Dim dicT As Object 7 Dim key As String 8 Dim count1 As Long 9 count1 = 0 10 11 Set dicT = CreateObject("Scripting.Dictionary") 12 Set sh1 = Worksheets("rawdata") 13 maxrow = sh1.Cells(Rows.count, "B").End(xlUp).Row 14 15 For wrow = 2 To maxrow 16 key = sh1.Cells(wrow, "B").Value 17 If dicT.exists(key) = False Then 18 dicT(key) = True 19 Else 20 count1 = count1 + 1 21 End If 22 Next 23 24 '結果の表示 25 MsgBox "重複数:" & count1 26 27End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これだとどうでしょう

VBA

1 Dim tempStr As String 2 3 ---略--- 4 5 If Sheets("●●/●●実施").Range("A:A").Find(What:=.Cells(i, 2), LookAt:=xlWhole) Is Nothing Then 6 Count = Count + 1 7 tempStr = vbCrLf & i & "行目:" & Cells(i, "A").Value & tempStr 8 End If 9 10 ---略--- 11 12 MsgBox "作成が完了しました。" & vbCrLf & vbCrLf & "回答数:" & Count & vbCrLf & tempStr

追記用

VBA

1Sub 回答者の重複をカウント() 2 3 Dim sh1 As Worksheet 4 Dim maxrow As Long 5 Dim wrow As Long 6 Dim dicT As Object 7 Dim key As String 8 9 Dim tempStr As String 10 Dim number As Variant 11 12 Set dicT = CreateObject("Scripting.Dictionary") 13 14 Set sh1 = Worksheets("rawdata") 15 maxrow = sh1.Cells(Rows.count, "B").End(xlUp).Row 16 17 For wrow = 2 To maxrow 18 key = sh1.Cells(wrow, "B").Value 19 20 If dicT.Exists(key) = False Then 21 dicT.Add key, 1 22 Else 23 dicT(key) = dicT(key) + 1 24 End If 25 Next 26 27 For Each number In dicT.keys 28 If dicT.Item(number) > 1 Then 29 tempStr = tempStr & number & ":" & dicT.Item(number) & vbCrLf 30 End If 31 Next number 32 33 MsgBox tempStr 34 35End Sub

投稿2021/12/09 07:44

編集2021/12/13 06:24
bebebe_

総合スコア504

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/09 09:16 編集

ご回答ありがとうございます。 いただいた内容で問題なく対応できました。 大変恐縮ですが、質問に追記したコードでも対応しようと試みました。 その際に正常に表示されず、1行目の項目が表示されてしまいました。 もしご教示いただけるようでしたらお願いできますでしょうか。
bebebe_

2021/12/13 00:17

すみません、求めている内容が把握できていないです。 追記のコードのほうは問題ないように見えるので追記のコードに会員番号が含まれていない回答数のカウントも表示するようにしたいということですか?
退会済みユーザー

退会済みユーザー

2021/12/13 03:01

先日ご対応いただいた内容は ●●/●●実施 と rawdata を照合し、rawdataのB列に含まれているが●●/●●実施のA列には含まれていない場合に該当の会員番号を表示する。という事です。 今回求めているのは rawdataのB列で重複している会員番号があった場合、表示したい。という意味になります。
bebebe_

2021/12/13 04:40

追記の分も回答のほうに追加してみました。 求めている結果になっていますか?
退会済みユーザー

退会済みユーザー

2021/12/13 08:22

なっております。 大変助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問