プロが教えるわが家の防犯対策術!

お願いします。

エクセルで2万件のデータを関数処理しています。時間がかかるのでVBAで処理できればと
考えています。

A列に当日の顧客コード
B列に前日の顧客コード  
以下の式によって、前日と当日を比較して増えた顧客と減った顧客を表示させています。

C列に=IF(COUNTIF(B$2:B$23000,A2)>=1,"","増")の関数が入っています。
計算させた後でC列をオートフィルタで増のみ表示し、確認。

D列に=IF(COUNTIF(A$2:A$23000,B2)>=1,"","減")の関数が入っています。
計算させた後でD列をオートフィルタで減のみ表示し、確認。

これをVBAで処理して時間の短縮をしたいのでお教え頂ければ幸いです。
宜しくお願いします。

A 回答 (2件)

そのまんまVBAに置き換えるとこんな感じですね。



Sub Sample()
  Dim nALast As Long
  Dim nBLast As Long
  Dim i, rtn
  
  nALast = Cells(Rows.Count, 1).End(xlUp).Row
  nBLast = Cells(Rows.Count, 2).End(xlUp).Row
  Application.ScreenUpdating = False
  Range("C2:D" & WorksheetFunction.Max(nalst, nBLast)).ClearContents
  For i = 2 To nALast
    rtn = WorksheetFunction.CountIf(Range("B2:B" & nBLast), Cells(i, 1).Value)
    If rtn < 1 Then Cells(i, 3) = "増"
  Next i
  For i = 2 To nBLast
    rtn = WorksheetFunction.CountIf(Range("A2:A" & nALast), Cells(i, 2).Value)
    If rtn < 1 Then Cells(i, 4) = "減"
  Next i
  Application.ScreenUpdating = True
End Sub
    • good
    • 0

こんにちわ



処理の確認
A列に有ってB列に無いものが増
B列に有ってA列に無いものが減 ・・・ですね。

顧客コード
英数字が混じっているか、数字のみか
数字のみの場合は、何桁あるのかお知らせください。

現状、どれくらいの時間がかかっているのか

以上、お知らせください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!