|
▼Nishimura さん:
>▼ichinose さん:
> I J
>
>8 AAAAAA
>9 AAAAAA
>10 AAAAAA
>11 BBBBBB
>12 CCCCCC
>13 CCCCCC
>14 CCCCCC
>15 DDDDDD 1
>16 CCCCCC 1
>17 CCCCCC
>
>誤データが2件と出ます。
>実はCCCCCの塊の中にDDDDDが1件混じりこんでいるので
>1件が正しいのですが・・・
>
>それから書き忘れましたが、会計処理はかなりルール化されて
>おり、顧客名の順番はいつも同じです。欠番はありません。
> ~~~~~~~~~~~~~~~~~~~~~~~~
>最小行でも1行は使われています。
>ただ顧客単位の集計により行数が異なるのです。
>入力時に伝票の記入ミスやコードの入力ミスで顧客名が
>間違えるのです。
横から失礼します。
ある顧客範囲の中に別の顧客が何件入っているか?
と言うのをJ列に件数で表示するサンプルです。
Sub try()
Dim Dic As Object
Dim r As Range
Dim v, key
Dim i As Long
Set Dic = CreateObject("Scripting.Dictionary")
With ActiveSheet
v = .Range(.Range("I8"), .Cells(Rows.Count, "I").End(xlUp))
For i = 1 To UBound(v, 1)
If Not Dic.exists(v(i, 1)) Then
Dic(v(i, 1)) = Array(i + 7, i + 7)
Else
Dic(v(i, 1)) = Array(Dic(v(i, 1))(0), i + 7)
End If
Next
For i = 1 To UBound(v, 1)
For Each key In Dic.keys
If v(i, 1) <> key Then
Set r = .Range("I" & Dic(key)(0), "I" & Dic(key)(1))
If Not Intersect(.Range("I" & i + 7), r) Is Nothing Then
.Range("J" & i + 7).Value = _
WorksheetFunction.CountIf(r, v(i, 1))
End If
End If
Next
Next
Set Dic = Nothing
Set r = Nothing
End With
無駄な作業もあるかと思いますが、ご参考になれば幸いです。
|
|