Scott Craner의 조언에 따라 Intersect를 사용하여 실제 데이터에 맞게 열 범위를 트리밍합니다.
=STDEV(IF((Data!$A$1:$A$19>=Result!$A$10)*Data!$A$1:$A$19<Result!$B$10),[email protected]$E$1:$E$19))
새로운 변수 선언 :
Dim DataA As String, DataI As String, sFormula As String
코드를 i
및 r
루프에 삽입 여기
는
r = 10: i = 5
및
Worksheets("Data")
데이터의 19 개 행이 샘플 출력 :
With Worksheets("Data")
DataA = Intersect(.Columns("A"), .UsedRange).Address
DataI = Intersect(.Columns(i), .UsedRange).Address
sFormula = "=STDEV(IF((Data!" & DataA & ">=Result!$A$" & r & ")*(Data!" & DataA & "<Result!$B$" & r & "),[email protected]" & DataI & "))"
End With
With Worksheets("Result")
.Cells(r, 4) = .Evaluate(sFormula)
End With
문자열과 변수가 섞여있는 것처럼 보입니다. VBA 메서드는 마술처럼 문자열의 중간에서 실행되지는 않습니다. 별도로 실행하고 다시 연결해야합니다. Excel에서도 "and"와 같은 것이 없습니다. VBA에서 실행되도록하거나 'And (condition1, condition2)'함수처럼 사용하십시오. – Mikegrann
고마워요. 나는 and() 함수를 올바르게 기억하지 못했다. 문자열과 변수를 올바르게 연결하는 방법을 알 수 없습니다. –
열 (i)가 'i' 변수이거나 열 I를 원할 때 –