|
会計の集計ソフトからエクセルにデータを貼り付け、
会計の入力が間違っていないかチェックさせるエクセルの表をVBAを活用したものです。
I列の8行目から顧客名が並んでいます。(最終的には500行くらいまで顧客名が詰まっています)
今までは顧客名が必ず最低2行同じ名称が並んでいました。
並んでいない場合は、このエクセルのVBAで会計ソフトの入力ミスのカウントを
させて、いました。
ところが最近データが最低1行のものも出てきて現在のコードでは問題点が出てきました。
コードを色々変えて試行錯誤したのですが、適切な動作が出来ません。
アドバイスお願いします。
今までのデータ → 最近のデータ
I列 I列
AAAAA AAAAAA
AAAAA AAAAAA
AAAAA AAAAAA
BBBBB BBBBBB
BBBBB CCCCCC
CCCCC CCCCCC
CCCCC CCCCCC
CCCCC DDDDDD
入力ミスなし 入力ミスなしであるが
誤データ0件 誤データ2件→これを0件表示にさせたい
顧客名は並んで入力されていない場合は入力ミスです。
必ず顧客名が固まっている(一件だけの場合が出てきたのですが)、この表で
最後の列にAAAAAという顧客があれば入力ミスになります・・・Countされます)
同じ顧客名が離れた行に出るということは、語入力を検出させることが
本来の目的です。
説明が十分ではありませんが、コードとしては
Sub カウント()
Dim i As Long
Dim cnt As Long
Application.ScreenUpdating = False
For i = 8 To Range("I65536").End(xlUp).Row
Columns("I:I").AutoFilter _
Field:=1, Criteria1:=Cells(i, 9).Value
'もしCountが1であっても、cntは0とするを付け加えたいのですが・・・
If ActiveSheet.UsedRange.Columns(9). _
SpecialCells(xlCellTypeVisible).Count - 1 = 1 Then
cnt = cnt + 1
End If
Next i
ActiveSheet.AutoFilterMode = False
MsgBox "「誤データ」が " & cnt & "件(以上)です。"
Application.ScreenUpdating = True
End Sub
よろしくお願いします。
|
|