본문 바로가기

VBA/엑사남_기초방93

[기초방] VBA 100제 #58 [ 불일치 영역 색칠하기 ] 각각의 이름중에 같은 열에 [불일치]가 포함되어 있으면 그 사람의 해당열을 노란색으로 칠하는 구문이다. 금일 본인의 코드에서는 복수의 행이 아닌 단일 행이 있는 경우라면 제대로 표현이 되지 않을 것이다. 이것은 기초방 59번 문제에서 해결해보려고 한다. 더보기 Option Explicit Sub 기초방58() Dim rngAll As Range: Set rngAll = [d5:j24] Dim rngA As Range Dim rngU As Range rngAll.Interior.Color = xlNone '= 초기화 For Each rngA In rngAll Do Until Cells(rngA.Row, "c") Cells(rngA(2, 1).Row, "c") '= 순환셀과 바로 밑에 셀의 일치 여부 If .. 2023. 7. 11.
[기초방] VBA 100제 #57 [ 영역 합계구하기 ] 빈셀의 크기는 유지한채 내용 있는 셀들만 합계를 구하는 구문이다. 이 문제는 Areas 를 알고 있는것과 그렇지 않은 것 사이의 차이가 많이 난다. 더보기 Option Explicit Sub 기초방57() Dim rngAll As Range: Set rngAll = Range("d5:d" & Cells(Rows.Count, "d").End(3).Row) Dim rngA As Range, rngX As Range, rngF As Range Dim i, j, Vtemp() ReDim Vtemp(rngAll.Cells.Count - 1) '= 임시배열 크기는 전체영역 크기로 잡음 For Each rngX In rngAll.SpecialCells(4).Areas '= 빈영역을 임시 배열에 담아라 Vtemp(i).. 2023. 7. 7.
[기초방] VBA 100제 #56 [ 문자열 조합 + 정렬하기 ] 문자열을 조합하는 구문이다. 56번은 엑셀 365함수를 이용하여 textjoin을 함수의 빈셀포함을 적용하면 나오는 똑같은 결과를 가져오는 구문이다. VBA 의 join함수를 사용하려면 1차원 배열 형태여야 하기 때문에 2차원 배열을 1차원화 하는 방법을 가져와야 한다. Vtemp = rngA.Resize(1, 5) V = Application.Index(Vtemp, 1, Array(1, 2, 3, 4, 5)) Cells(rngA.Row, "h") = Join(V, ",") 영역을 동적배열로 다이렉트로 가져오게 되면 2차원 배열이 되는데 이 2차원 배열을 1차원 배열화 하려면 슬라이싱 작업을 거쳐야 한다. Array(1, 2, 3, 4, 5)는 열의 갯수를 의미한다. 56-1은 셀에 출력 후 가로 정렬을.. 2023. 7. 7.
[기초방] VBA 100제 #55 [ 색상그룹평균 ] 색상그룹의 평균을 구하는 구문이다. 이런 문제는 딕셔너리로 하면 더 빠르고 코드도 간단하겠지만 기초방이라는것을 감안하여 임시배열을 통해서 풀어보았다. 더보기 Option Explicit Sub 색상평균구하기() Dim rngAll As Range: Set rngAll = Range([h5], [h5].End(4)) Dim rngA As Range Dim color$, r&, n& Dim vtemp ReDim vtemp(rngAll.Cells.Count, 1) '= 임시배열 크기 With [m4].CurrentRegion.Offset(1) '= 초기화 .Interior.color = xlNone .ClearContents End With For Each rngA In rngAll If InStr(color.. 2023. 7. 5.