2011-03-21 6 views
1

Excel 통합 문서에 특정 키의 값을 복구하고 정렬해야하는 불규칙하게 채워진 테이블이 여러 개 있습니다. 조회는 이벤트에 의해 트리거됩니다.Excel VBA의 스파 스 워크 시트에서 데이터 복구 및 정렬

루프 및 배열을 사용하여이 작업을 수행 할 수 있지만 VBA에서 루프를 경고했습니다. 아마도 더 복잡한 방법이 inbuilt Excel 기능을 사용하고 있는지 궁금합니다.

속도가 중요합니다.

UID| UK | FR | DE | FI | LUX | ..... 
1 | 0 | 0 |0.03| 0.1| 0 | ..... 
2 | 0 | 0 | 0 | 0 | 0.5 | ..... 
3 |0.01| 0 | 0 | 0 | 0.09| ..... 
4 | 0 | 0 | 0 | 0.2| 0 | ..... 
5 |0.31|0.07| 0 | 0 | 0 | ..... 
. . . . .  . 
. . . . .  . 
. . . . .  . 
. . . . .  . 

그래서이 샘플 표에서 각 고유 ID의 지리적 분포를 반환하고 가중치가 0 인 영역을 생략하여 정렬하려고합니다.

테이블 시트에는 수천 개의 UID와 수천 개의 영역이 있습니다.

+2

우리에게 예를 들기 그래서 우리는 ... –

+1

이 왜 루프를 경고했다 추측 필요가 없습니다? – ktharsis

+0

잘하면 그 명확하게 될 – mjmdavis

답변

2

아직 성취하려는 것이 분명하지 않지만이 말을 많이 할 것입니다 : 내장 된 Excel 기능이 없습니다. 아니면 적어도 코드를 작성하는 것만 큼은 아닙니다. 당신 자신.

이 시도 :

Dim rngData As Range 
Dim varDummy As Variant 
Dim iUID As Long, iRegion As Long 

Set rngData = Range("A2:Z50") ' or wherever your data is 

varDummy = rngData ' Reads in whole range at once into array. (Must be Variant.) 
        ' Much quicker than accessing one cell at a time. 

' Go nuts with loops here. 
For iUID = LBound(varDummy,1) To UBound(varDummy,1) 
    For iRegion = LBound(varDummy,2) To UBound(varDummy,2) 

     If varDummy(iUID,iRegion) = 0 Then 
      ' Nothing here, ignore this cell. 
      ' Do nothing. 
     Else 
      ' Do your thang 
      ' ... code for whatever it is you want to do goes here. 
     End If 

    Next iRegion 
Next iUID 
+0

감사! 나는 지금 일하고있다. – mjmdavis

관련 문제