본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #59 [ 불일치 영역 색칠하기 ] 기초방 58번에서 언급했듯. 59번 코드가 정석이다. 이유는 58은 성명이 하나인 곳에서 에러를 발생할 것이며, 속도 또한 59번보다 느릴것이다. 영역을 순환하는 것보다. find로 바로 바로 찍어서 영역을 합치기 때문에 데이터 양이 많다면 분명 더 효과적일것이다.' haja_find 함수의 find구문은 일정부분 루틴이 있는 것이기 때문에 반드시 기억하길 바란다. 더보기 Option Explicit Sub 기초방59() Dim rngAll As Range: Set rngAll = [m5:s25] Dim rngA As Range, rngC As Range Dim strFind$ For Each rngC In rngAll.Columns For Each rngA In rngC.Cells If rngA = ".. 2023. 8. 1.
[기초방] 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.