300x250
1. 예제파일 작성
1) 아래 시간기준으로 30초마다 CLOSE 데이터를 OHLC 계산한다.
2. 코드작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | Sub minute_bong() last_row = Cells(Rows.Count, 1).End(3).Row start_pos = 10 '시작위치 FOR_IDX = 3 c = FOR_IDX pre_index_row = FOR_IDX - 1 START_COND = 1 For ii = FOR_IDX To last_row '1. 시간계산하기 Cells(ii, start_pos).Value = Cells(ii, 2).Value \ 10000 '시 Cells(ii, start_pos + 1).Value = (Cells(ii, 2).Value \ 100) - (Cells(ii, 2).Value \ 10000) * 100 '분 Cells(ii, start_pos + 2).Value = Cells(ii, 2).Value Mod 100 '초 Cells(ii, start_pos + 3).Value = Cells(ii, start_pos).Value * 3600 + Cells(ii, start_pos + 1).Value * 60 + Cells(ii, start_pos + 2).Value '시간을 초환산 Cells(ii, start_pos + 4).Value = Cells(ii, start_pos + 3).Value Mod 30 '1-1. 헤더 작성하기 If START_COND = 1 Then Cells(c - 1, start_pos + 6).Value = "OPEN" Cells(c - 1, start_pos + 7).Value = "HIGH" Cells(c - 1, start_pos + 8).Value = "LOW" Cells(c - 1, start_pos + 9).Value = "CLOSE" START_COND = 0 End If '2. 봉계산하기 If (Cells(ii, start_pos + 4).Value - Cells(ii - 1, start_pos + 4).Value) < 0 Then '30초 'If Cells(ii, start_pos + 1).Value <> Cells(ii - 1, start_pos + 1).Value Then '1분 'Cells(ii, start_pos + 4).Value = ii 'index row 'Cells(c, start_pos + 5).Value = Cells(ii - 1, start_pos + 1).Value & Cells(ii - 1, start_pos + 2).Value 'time Cells(c, start_pos + 6).Value = Cells(pre_index_row, 6).Value 'open Cells(c, start_pos + 7).Value = WorksheetFunction.Max(Range("F" & pre_index_row & ":" & "F" & ii - 1)) 'high Cells(c, start_pos + 8).Value = WorksheetFunction.Min(Range("F" & pre_index_row & ":" & "F" & ii - 1)) 'low Cells(c, start_pos + 9).Value = Cells(ii - 1, 6).Value 'close pre_index_row = ii 'open 계산용 c = c + 1 End If Next MsgBox ("완료") End Sub | cs |
3. 결과
1. 시간열을 쪼개 계산하고, 30초로 나눠 계산결과기준으로 OHLV 계산한다.
300x250
'엑셀 > VBA' 카테고리의 다른 글
vba-30초봉 분봉으로 변환 (0) | 2024.03.10 |
---|---|
VBA-데이터 조건으로 데이터 잘라서 정리하기 (0) | 2024.02.29 |
VBA-DATA 조건으로 나머지 데이터값 가져오기 (0) | 2024.02.03 |
VBA - 데이터 변경지점의 값을 정리하기/가져오기 (0) | 2024.02.03 |
엑셀 vba/데이터 한열에 정리하기 (0) | 2023.11.12 |