폴더의 모든 파일을 통해 루프를 실행하려고 하는데이 파일을 사용하여 20×2 셀 (예 : N1 : O20)을 채우는 수식을 실행하고 찾은 값을 유지하고 다음 값을 추가하려고합니다 이전 반복의 맨 아래
여기 내가 작업하고있는 코드가 있습니다 .A1 : K36004는 .dat 파일이 정보를 표시하는 위치입니다.
Len (strFile)> 0 ‘여기에 Clearcontents를 추가하면 다음 반복에서 수식 값이 지워집니다.
With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
End With
'End Extraction
' Filter_Minute Macro
이 값을 위치에 저장하고 다음 반복을 다음 빈 행으로 이동해야합니다.
Range("N5").Select
Range("N5").Formula = "=INDEX($A$5:$A$36004,(ROW(N5)-5)*1200+1,1)"
Selection.AutoFill Destination:=Range("N5:N34"), Type:=xlFillDefault
Range("N5:N34").Select
Range("N5:N34").Select
Range("O5").Select
Range("O5").Formula = "=MAX(INDEX($J$3:$J$36004,(ROW(H3)-3)*1200+1,1):INDEX($J$3:$J$36004,(ROW(H4)-3)*1200,1))"
Selection.AutoFill Destination:=Range("O5:O34"), Type:=xlFillDefault
Range("O5:O34").Select
Range("O5:O34").Select
strFile = Dir
고리
이 그림은 이전의 전체 카운트가 이동 된 다음 반복에서 발생하는 상황을 보여줍니다.
시간 내 줘서 고마워.
답변
나는 당신이 요구하는 것을 완전히 따르지는 않지만 (의문의 여지가 없지만) 고정 된 대상 범위 (N1 : O20)를 기계적으로 추적하는 간단한 경우입니다.
- x는 (1) 범위의 첫 번째 행입니다.
- 행 수 (numRows)는 상수입니다 (20).
- VBA 수식의 대상 범위는 “Nx : Ox + numRows-1″형식의 문자열 값 (theRange)입니다.
- 루프가 시작되기 전에 첫 x 값이 할당됩니다
- 모든 반복에 대해 : theRange = “N”& str (x) & “: O”& str (x + numRows-1); {
range.(theRange)
따옴표없이 범위를 참조 }; x = x + numRows; 루프 끝
처음부터 : theRange = “N1 : O20”. 두 번째 : theRange = “N21 : O40”
의미있는 변수 이름을 사용하십시오.
따라서 기본적으로 관심있는 정보의 “프레임 끝점”을 추적 한 다음 프레임을 이동합니다. 프레임의 크기가 가변적 인 경우 끝점을 지정하는 방법을 해결하려면 훨씬 더 많은 논리가 필요합니다. 예제 텍스트에서 시작 행은 1이되고 그림에서 시작 행은 5가됩니다.
동일한 루프에서 필요한 다른 변수 범위에 대해서도 비슷한 구성표를 사용하십시오.