오늘은 배열 슬라이싱에 관해서 알아보자.
본인이 쓴글에 간간히 배열 슬라이싱에 관해서 구문을 이용한적은 있지만, 요즘 채팅방에서 학구열이 너무 높아져서 배열에 대해서 좀 더 깊이 다루는 문제를 만들어 보았다.
배열 슬라이싱에 관해서 무궁무궁한 질문과 답들이 올라온다
특히 파이썬으로 들어가면 NumPy를 통한 OpenCV문제등 배열을 쪼개고 붙히고 나누는 상황들이 많이 발생하게 된다.
이참에 배열에 좀 더 깊이 들어가시길 바란다.
시작은 Application.index로 시작한다. 이것으로부터 시작하여 배열을 나누고 붙히고 쪼개면 된다.
이글을 읽는 본인들은 기존보다는 더 고급진 당신의 배열의 퀄을 높히기 위해서 들어왔을 것이다.
당신의 한층 더 단단한 배열에 힘을 주었길 바란다.
# Ubound(vall,1) -> 2차원 배열의 행의 최댓값
# Ubound(vall,2) -> 2차원 배열의 열의 최댓값
# Application.index(배열, p ) -> 배열의 p행값을 모두 가져온다
# Application.index(배열, ,q ) -> 배열의 q열값을 모두 가져온다
# Application.index(배열, p,q ) -> 배열의 p행, q열값을 모두 가져온다
더보기
Sub 배열문제()
Dim Vall: Vall = Sheets("데이터").[a2:g17] '= 데이터 시트의 배열값 담기
Dim rowV '= 열의 Row값을 배열화 해라
Dim rowCnt: rowCnt = UBound(Vall, 1) '= 배열의 행의 최대길이
[g6].Resize(1, UBound(Vall, 2)) = Application.Index(Vall, 3)
'= Vall의 3행의 전체를 [F6]을 기준으로 배열의 가로값만큼 안에 뿌려라
[g7].Resize(1, UBound(Vall, 1)) = Application.Transpose(Application.Index(Vall, , 2))
'= Vall의 2열의 값을 가져오는데 가로로 뿌려야 하기 때문에 트랜스포스를 하고 가로의 길이는 배열의 세로의 길이만큼으로 하여 영역에 뿌려라
[g8] = Application.Index(Vall, 2, 5)
'= 2행 5열의 값
rowV = Application.Evaluate("ROW(1:" & UBound(Vall, 1) & ")") '= 엑셀 함수 Row을 통해서 rowV에 배열로 담아라
With Sheets("통합")
.[b11].Resize(rowCnt, 2) = Application.Index(Vall, rowV, Array(1, 2)) '= Vall에서 배열 각 행의 1,2열만 가져와라
.[e11].Resize(rowCnt, 1) = Application.Index(Vall, , 3)
.[g11].Resize(rowCnt, 1) = Application.Index(Vall, , 5)
.[i11].Resize(rowCnt, 2) = Application.Index(Vall, rowV, Array(6, 7)) '= Vall에서 배열 각 행의 6,7열만 가져와라
.[b29].Resize(5, 3) = Application.Index(Vall, Application.Transpose(Array(3, 6, 10, 13, 15)), Array(1, 4, 6))
End With
Call 서식
End Sub
Sub 서식()
Dim rngAll As Range
Set rngAll = [f6].CurrentRegion
Set rngAll = rngAll.SpecialCells(2)
rngAll.Borders.LineStyle = 2
Set rngAll = [b10:j26]
Set rngAll = rngAll.SpecialCells(2)
rngAll.Borders.LineStyle = 2
Set rngAll = [b29:d33]
rngAll.Borders.LineStyle = 2
MsgBox "배열 문제가 완성되었습니다."
End Sub
'VBA' 카테고리의 다른 글
[VBA] 중첩배열이란..... (0) | 2022.12.08 |
---|---|
[VBA] 영역의 테두리만 색상을 입혀보자 (0) | 2022.12.08 |
[VBA] Old시트 New시트 업데이트하기 (0) | 2022.12.06 |
[VBA] 누락수 구하기(ArrayList, Dictionary, Collection) (0) | 2022.11.26 |
[VBA] 멜론 Top 100 ..야나두~~ (0) | 2022.11.14 |
댓글