아래 코드는 작업을 완료하는 데 약간의 시간이 걸립니다. 나는 author_metadata
에서 적은 수의 줄을 사용하려고했지만 40000 줄조차 너무 많습니다. Excel VBA로보다 빠른 대안이 있습니까?큰 데이터 워크 시트에서 Excel vba 실행 속도가 느림
author_metadata = ThisWorkbook.Worksheets("author_metadata").Range("A1:P542995").Value
allprofs = ThisWorkbook.Worksheets("allprofs").Range("A1:H4005").Value
Top200 = ThisWorkbook.Worksheets("Top200").Range("A1:B200").Value
m = 1
For j = 1 To 200
For k = 1 To 4005
If allprofs(k, 4) = Top200(j, 1) Then
For i = 2 To UBound(author_metadata)
If author_metadata(i, 10) = Top200(j, 1) Then
If allprofs(k, 2) = author_metadata(i, 12) Then
'do some data assigning between arrays like the next line
Top200Full(m, 1) = author_metadata(i, 1)
m = m + 1
End If
End If
Next i
End If
Next k
Next j
ThisWorkbook.Worksheets("Top200full").Range("A2:Q75601").Value = Top200Full
End Sub
어디서 멈 춥니 까? 마지막 줄? 배열 붙여 넣기를 기준으로 마지막 범위를 정의 해보십시오. –
[코드 검토] (http://codereview.stackexchange.com/)가 도움이 될 수 있습니다. –
당신이 할 수있는 일은 진행률 표시기를 병목 지점에 추가하는 것입니다. For k 루프의 시작 부분에 바로 배치하는 것으로 시작합니다. 'Debug.Print '와 같은 것 j : "& j &"- k : "& k'. 그런 다음이 업데이트의 속도 또는 속도를 확인하십시오. 수정 사항 고려 : 너무 빨리 볼 수는 없습니다. 여기 피할 수없는 복잡성이있는 것 같습니다. XLL 또는 C++ 기반 COM 추가 기능을 작성하는 것 외에도) –