본문 바로가기
VBA

[VBA] 성적 등급표 만들기(Feat. 수우미양가~~~)

by 일등미노왕국 2022. 4. 20.

본인이 엑사남님 통해서 VBA를 조금씩 알아갈 때쯤 하나의 갈증같은게 있었다.

구글링을 하던 어떻게 어떻게 로직을 만들기는 했으나, 변수는 i, j으로 늘 이중 For문으로 로직을 짜고 있었다. 그게 나쁘다거나 틀렸다는 것이 아니라, 그냥 본인 스스로가 완성된 코드가 그리 이뻐 보일질 않았다. 오늘은 절대 이중 for문 쓰지말자 다짐하고 Do until ~ Loop 를 써보기도 하고 For Each문으로 대신 해보기도 했지만, 셀에 출력을 할땐 행과 열이 필요했기 때문에 또다시 이중 For문으로 돌아가길 반복했다.. 물론 지금은 거의 고정적으로 rngA, rngAll 를 사용하여 For each로 순환하고 있지만 이전보다는 만족스러운 코딩 생활을 하고 있다.

 

이게 중요하냐 아니냐는 VBE창을 블랙으로 하냐 아니면 처음 그대로로 사용하는냐 그 차이이다. 그 어떤것도 정답은 없다. 결과만 당신들이 원하는 대로만 나온다면.....

 

오늘은  예전에 많이 했던 평균점수를 통해 수우미양가를 출력하는 코드들을 만들어 보겠다..

그래 맞다 쉽고...기초이다.. VBA로 굳이 다중 if를 사용하지 않아도 엑셀로 다중 If문을 사용하면 구할 수 있다. 조선 초기 양반 어르신들처럼 쉬운 한글이 있는데 굳이 한자만이 격조있는 글인냥 뽐내기 위함도 아니다. 

 

아는만큼 보인다고 했다. 같은 문제라도 여러 접근 방식의 해답지들을 많이 보고 공부하면 반드시 도움이 되리라 본다..

 

앞 설이 너무 길었다. 실은 오늘 내용은 그리 길지 않아서 주저리 말이 많았다..

 

이렇게 정석으로 풀어주신 엑사남님을 필두로

 

다잡님처럼 한줄로 하신분도 계시고

 

준빠님처럼 함수로 하신분도 계시고

VBA공부중님 처럼 Select Case로 하신분들도 있고

 

전혀 예상하지 못한 컬렉션으로 해결하신

떠돌이님도 계시고

 

Adodb로 푸신 이방 주인인 뽀리너님 코드도 있다.

다들 각자의 무기를 가지고 자신들의 영역에서 VBA의 매력을 더 맘껏 펼치시길 바란다.

Option Explicit

Sub Haja_Rank()

    Dim rngAll As Range: Set rngAll = [b4].CurrentRegion
    Set rngAll = rngAll.Offset(1).Resize(rngAll.Rows.Count - 1, 7)
    Dim rngA As Range
    
    For Each rngA In rngAll.Columns(7).Cells
    
        rngA.Next = Switch(rngA < 60, "가", rngA < 70, "양", rngA < 80, "미", rngA < 90, "우", rngA <= 100, "수")
    
    Next rngA

End Sub

 

 

댓글