스샷에 있는 숫자들은 한줄로 보면 되는 숫자들.
이 숫자들의 최대값
연속된 2개의 셀의 합의 최대값
연속된 3개의 셀의 합의 최대값
.
.
.
연속된 n개의 셀의 합의 최대값을 구하는 매크로
배열을 이용해 1열로 세우고
합과 최대치를 구하였다.
Option Base 1 Option Explicit Sub Macro() Dim rng As Range, rngA As Range Dim var1D() As Double, varMax() As Double Dim i As Integer, j As Integer, intV As Integer Dim cntC As Integer Dim rngTemp As Range '시트2의 기존값 삭제 및 영역 설정 Sheets(2).Range("A1").CurrentRegion.ClearContents Set rngA = Range("A1").CurrentRegion cntC = rngA.Columns.Count + 2 '값을 1차원 배열에 삽입 For Each rng In rngA intV = intV + 1 ReDim Preserve var1D(intV) var1D(intV) = rng Next rng '배열을 셀에 재입력(합을 쉽게 하기 위해) Set rngTemp = Cells(1, cntC) rngTemp.Resize(intV) = Application.Transpose(var1D) '1~n개씩 더하며 최대값을 시트2에 입력 Do Until j = intV + 1 Erase var1D j = j + 1 For i = 1 To intV ReDim Preserve var1D(i) var1D(i) = WorksheetFunction.Sum(Cells(i, cntC).Resize(j)) If i = intV Then ReDim Preserve varMax(j) varMax(j) = WorksheetFunction.Max(var1D) '연속된 n개의 셀의 합이 가장 큰 값을 배열에 삽입 End If Next i Loop '시트2에 각 최대값을 입력 Sheets(2).Range("A1").Resize(intV) = Application.Transpose(varMax) '임시로 입력한 숫자 삭제 rngTemp.CurrentRegion.Delete End Sub | cs |
'VB(A)' 카테고리의 다른 글
누적되지 않는 실시간 그래프 (0) | 2015.08.09 |
---|---|
하위 폴더의 파일명, 수정날짜, 경로 가져오기 (0) | 2015.07.31 |
A시트와 B시트의 필터링 값을 각각의 파일로 저장 (0) | 2015.07.27 |
대량의 데이터 변환 (0) | 2015.07.27 |
대괄호 이동 (0) | 2015.07.27 |