• 締切済み

エクセルの関数でのデータ処理が重い

お願いします。 エクセルで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で処理して時間の短縮をしたいのでお教え頂ければ幸いです。 宜しくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

こんにちわ 処理の確認 A列に有ってB列に無いものが増 B列に有ってA列に無いものが減 ・・・ですね。 顧客コード 英数字が混じっているか、数字のみか 数字のみの場合は、何桁あるのかお知らせください。 現状、どれくらいの時間がかかっているのか 以上、お知らせください。