본문 바로가기

VBA/엑사남_기초방93

[기초방] VBA 100제 #7 [ 행렬변환 ] 왼쪽에 있는 데이터를 오른쪽에 있는 표 테이블에 입력하는 구문 Transpose 쓰기 없기로 했더니...아주 가~~~관이다.. 잔머리님도 모카님 닮아가시는지 함수로 해결해버리셨다. 아~~ 고인물들 딱총님도 약간의 변형을 했지만 결국 엑셀 함수형으로 완성하였다 무지님만이 유일하게 For each 로 풀었다. 풀이를 하자면 찾는 상품명을 찾아서 그것을 Find_Cell로 선언한 후, Find_Cell을 순환하면서 각각의 값들을 셀에 찍는 코드이다. 아무리 트랜스포스를 안쓰려고 해도 이것보다 쉽고 간편한게 없어...슬쩍 트랜스포스 쓰고 달아나려한다. 더보기 Option Explicit Sub 행렬변환A() Dim rngAll As Range: Set rngAll = [ae9:ah9] Dim rngA As Ra.. 2023. 1. 4.
[기초방] VBA 100제 #8 [ 데이터 영역 선택하기 ] 이 문제는 두개의 문제가 혼합되어 있다. 1. 3행씩 반복하며 셀서식 적용하기 2. 한행에 300,000원이 단 한번만 있는 행에 셀 서식입히기 이번 문제를 풀면서 Bln의 스위칭 역할을 좀 더 활용해보도록 하겠다. 본인은 1번문제는 Bln값을 True로 잡았고 / 2번문제는 False로 잡았다. 그럼 이 스위칭의 조건을 어떡해 줄까 생각하다가 매크로 버튼의 텍스트의 변화에 따라 Bln값을 달리하면서 그 Bln 값의 변환에 따라 매크로가 각각의 조건의 맞게 실행하도록 하였다. 마지막엔 1번문제를 실행하였다면 1번이 True니까 False로 전환하고 2번문제는 False 이니까 True로 전환해주면 결국 스위칭 효과가 발생한다. 걸렸다!! If bln = False Then SH.TextFrame.Char.. 2023. 1. 4.
[기초방] VBA 100제 #6 [ 데이터 영역 스위칭 ] 이번 문제는 셀의 움직임을 정확히 알고 있어야 쉽게 제어할 수 있다. 아래행으로 진행다가 자신이 이전셀보다 크다면 출력값에 본인의 값을 출력하고 영역을 스위칭해야 하는 문제이다. A 영역에 있을 경우 결과값에 값을 출력하기 위해서는 A 영역기준 열방향으로 +2를 해야한다. A 영역부터 시작할테니 A영역은 Bln의 초기값인 False 이다 B 영역에 있을 경우 결과값에 값을 출력하기 위해서는 B 영역기준 열방향으로 +1를 해야한다. B 영역으로 스위칭되면 B영역은 Bln값이 True로 스위칭하면 된다. C = IIf(bln = False, 2, 1) '= 해당 영역 기준 A 영역은 +2 / B 영역은 +1 한 영역에 해당 값을 출력하기 위한 상수 A영역 False에서 B로 이동하려면 +1로 이동해야한다. .. 2023. 1. 2.
[기초방] VBA 100제 #5 [ 영역의 끝찾기 ] 이번 문제를 풀기전에 End속성값의 상수에 대해서 알아보겠다 end(1) -> 기준점에서 공백 전까지의 왼쪽 끝 end(2) -> 기준점에서 공백 전까지의 오른쪽 끝 end(3) -> 기준점에서 공백 전까지의 위쪽 끝 end(4) -> 기준점에서 공백 전까지의 아래쪽 끝 문제1번은 공백이 없기 때문에 상수조합만 불려오면 쉽게 풀린다. 단 0 값에 대해서 end의 상수값에 0이 없기 때문에 0값일 때 어떻게 처리하냐가 문제1번의 풀이이다. Function find_end(rngA As Range, a&, b&) '= find_end 함수 rngA는 range타입 / a, b는 long 타입 Dim rngR As Range If a = 0 Then '= 앞에 상수값이 0 이면 Set rngR = rngA.E.. 2023. 1. 2.