본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #63 [ X축, Y축 최대 최소값 구하기 ] x축과 Y축의 최대 최소값을 구하는 문제이다. 단 X축에 최대값이 X축의 최대값과 Y축의 최대값이 X축에 함께 있으면 Y축의 두번째 최대값에 빨간색을 입혀야 한다. 영역의 최대 최소값은 하위프로시저를 호출하면서 작성하면 편하다 Sub find_Cell(rngAll As Range) Dim rngA As Range, rngX As Range Dim maxNum&, minNum& maxNum = WorksheetFunction.Max(rngAll): minNum = WorksheetFunction.Min(rngAll) For Each rngA In rngAll If rngA.Value = maxNum Then rngA.Font.Color = vbRed If rngA.Value = minNum Then rng.. 2023. 9. 19.
[기초방] VBA 100제 #62 [ 홀수_짝수차 구별하기 ] 더보기 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rngU As Range Dim rngAll As Range: Set rngAll = [e7].CurrentRegion Set rngAll = rngAll.Offset(1, 1).Resize(rngAll.Rows.Count - 1, rngAll.Columns.Count - 1) '= 차수별 데이터 If Intersect(rngAll, Target) Is Nothing Then Exit Sub '= 차수별 데이터를 클릭하지 않으면 종료 rngAll.Interior.ColorIndex = xlNone '= 색상 초기화 rngAll.Font.Bold = Fal.. 2023. 9. 18.
[기초방] VBA 100제 #61 [ 사진 정보 가져오기 ] 이 문제를 낸 의도는 거추장스런 For문 또는 Find문을 사용하는 것보단 함수식을 사용해서 빠르고 간편하게 사용할 수 있다는 생각에서 문제를 내었지만, 아직까진 속도에서 딕셔너리를 넘길 수 없었다. 이번 딕셔너리처럼 Value값이 배열로 담을 수 있다면 속도는 더 짧아질것이다. 본 문제를 쉽게 접근하게 되면 이렇게 피를 보게 된다. 더보기 Option Explicit Sub 기초방61() Dim rngAll As Range: Set rngAll = Range([a2], [a2].End(4)) Dim Vall, VA, vDict Dim T!, i&, sKey$ Dim Vtemp() Dim Dict As Object: Set Dict = CreateObject("Scripting.Dictionary") r.. 2023. 9. 15.
[기초방] VBA 100제 #60 [ 불일치 / 일치 같은 영역 색칠하기 ] 시리즈 마지막인거 같다. 같은 이름 사이에 [일치 / 불일치] 가 있을 때 일치이든 불일치이든 갯수가 이름의 갯수와 같은 영역에 노란색 음영을 칠하는 문제이다. 이 문제를 풀기 위해서는 1. 성명의 고유값들을 가져와야한다. 2. 고유값 이름들을 순환하면서 같은 이름들의 영역을 잡아야 한다. 3. 같은 이름들의 areas를 순환하면서 일치와 불일치의 카운트를 하여야한다. 4. 카운트 숫자와 이름 영역의 숫자와 비교하여 같으면 음영을 칠해야 한다. 5. 이를 마지막 열까지 순환하여야 한다. 1.성명의 고유값 구하기 Set rngX = [l5:l25] '= 이름영역 Vtemp = WorksheetFunction.Sort(WorksheetFunction.Unique(rngX)) 2. 고유값 이름순환 + 같은 이.. 2023. 9. 15.