, 이것은 단순한 수학이다.
Option Explicit
Sub missingGazePoints()
Dim blnk As Range
With Worksheets("Sheet3")
For Each blnk In .Columns("X:Y").SpecialCells(xlCellTypeBlanks)
blnk = blnk.End(xlUp).Value2 + _
(blnk.End(xlDown).Value2 - blnk.End(xlUp).Value2)/_
(blnk.End(xlDown).Row - blnk.End(xlUp).Row)
Next blnk
End With
End Sub
모든 누락 점을 선형 방식으로 채 웠습니다. 누락 된 모든 지점에 대해 정적 평균을 사용하지 않았습니다.
부록 : 반복적 인 워크 시트 조회에 행을 반복
일을 느리게 할 것입니다 배열 작업; 가능성이 크래쉬의 시점으로. 모든 값 (공백 포함)을 2 차원 변형 배열에 채우고 워크 시트에 값을 반환하기 전에 메모리 내에서 모든 처리를 수행하면 작업 속도가 빨라집니다 .¹.
Sub qwuirwqwq()
Dim rsz As Long, x As Long, y As Long
Dim vals As Variant, bd As Double, ed As Double
On Error GoTo bm_Safe_Exit 'uncomment this line when you have finished debugging
appTGGL bTGGL:=False 'uncomment this line when you have finished debugging
With Worksheets("Sheet3")
With .Cells(2, "X").Resize(Application.Min(.Cells(.Rows.Count, "X").End(xlUp).Row - 1, _
.Cells(.Rows.Count, "Y").End(xlUp).Row - 1), 2)
vals = .Cells.Value2
For x = LBound(vals, 1) + 1 To UBound(vals, 1)
If vals(x, 1) = vbNullString Then
y = x + 1
Do While vals(y, 1) = vbNullString
y = y + 1
Loop
vals(x, 1) = vals(x - 1, 1) + _
(vals(y, 1) - vals(x - 1, 1))/(y - x + 1)
End If
If vals(x, 2) = vbNullString Then
y = x + 1
Do While vals(y, 2) = vbNullString
y = y + 1
Loop
vals(x, 2) = vals(x - 1, 2) + _
(vals(y, 2) - vals(x - 1, 2))/(y - x + 1)
End If
Next x
.Cells = vals
ReDim vals(0)
End With
End With
bm_Safe_Exit:
appTGGL
End Sub
Public Sub appTGGL(Optional bTGGL As Boolean = True)
Application.ScreenUpdating = bTGGL
Application.EnableEvents = bTGGL
Application.DisplayAlerts = bTGGL
Application.Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual)
Debug.Print Timer
End Sub
참고 '도우미'일시적으로 세금 처리가 처리가 완료 될 때까지 다양한 환경 설정을 일시 중단 appTGGL 하위 프로 시저.
통합 문서를 .XLSM 대신 .XLSB로 저장하면 몇 가지 이점 (실행 속도, 파일 크기 축소)을 얻을 수도 있습니다.
는 I는 I5와 8Gbs와 태블릿 0.6 초 ~ 30 만 개 행을 16,000 블랭크 셀 후자 메모리 기반의 루틴을 실행 를 ¹. 네 ... 맞습니다. 제로 포인트 - 6 초.
감사합니다. 그것은 트릭을 수행하지만, 30000 개 이상의 행이있는 경우에는 속도가 느립니다. 계산 시간이 끝난 후 마침내 추락했습니다. :) 또한, 선형 계산 주셔서 감사합니다, 실제로는 더 좋습니다. 이제 20 개 이상의 공백을 제외 할 수 있는지 알아보기 위해 노력 중입니다. – Algeron
모든 처리가 메모리에 있도록 2 차원 변형 배열에서이 작업을 수행 할 생각입니다. 이는 몇 천 개가 넘는 모든 반복 처리를위한 최상의 솔루션입니다. – Jeeped
잠시 동안 [VBA 모범 사례 - 매크로 실행 중 속성 끄기] (http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/5925/switch-off-properties-during)를 참조하십시오. -macro-execution). – Jeeped