- 締切済み
エクセルの関数でのデータ処理が重い
お願いします。 エクセルで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で処理して時間の短縮をしたいのでお教え頂ければ幸いです。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mt2008
- ベストアンサー率52% (885/1701)
そのまんま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)
こんにちわ 処理の確認 A列に有ってB列に無いものが増 B列に有ってA列に無いものが減 ・・・ですね。 顧客コード 英数字が混じっているか、数字のみか 数字のみの場合は、何桁あるのかお知らせください。 現状、どれくらいの時間がかかっているのか 以上、お知らせください。