1. MakeArray 함수
가. 구문
=MAKEARRAY(rows, cols, lambda(행, 열))
지정된 행과 열의 크기로 Lambda함수를 이용해 행과 열 값이 입력된 계산 값을 반환합니다.
나. 예시
o 행과 열을 곱한 값 반환하기
=MAKEARRAY(3,3,LAMBDA(row,col,row*col))
3*3의 배열을 만드는데
행이 고정된 상태에서 열의 크기가 변합니다.
For~Next 반복문과 매우 유사합니다.
o For ~ Next 반복문과 비교
위와 같은 결과를 아래와 같이 매크로를 만들어서 얻을 수 있습니다.
Sub maparr()
Dim row As Integer, col As Integer
For row = 1 To 3
For col = 1 To 3
Cells(row + 4, col) = row * col
Next
Next
End Sub
차이점이라면 MakeArray 함수로 만들면 배열로 반환되고, For ~ Next 반복문으로 만들면 일정한 범위 내에 값이 반환된다는 것입니다.
위 매크로 문에서 row를 그대로 쓰면 MakeArray 함수의 결과와 위치가 같기 때문에 row+4로 4칸 아래 쓰도록 했습니다.
2. 구구단 만들기
구구단은 2단부터 시작하지만 rows와 cols는 1부터 시작하기 때문에 1단부터 만들어집니다.
가. 1단계 : 계산 값만 표시하기
수식을 만들면
=MAKEARRAY(9,9,LAMBDA(r,c,c*r))입니다.
행과 열의 크기를 9로 하고,
Lambda 식을 만드는데,
rows는 r로 받고, cols는 c로 받은 다음 반복을 하는데,
마찬가지로 행이 고정된 상태에서 열이 변합니다.
곱하기이므로 r*c나 c*r이나 결괏값은 같습니다.
나. 2단계 : 수식과 계산 값 모두 표시하기
=MAKEARRAY(9,9,LAMBDA(r,c,c&" * "&r&" = "&c*r))
값은 c*r인데 수식을 c*r=c*r로 표현해야 하므로
&(결합 연산자)를 이용해 값과 문자를 결합해야 합니다.
위 수식에서 c, r은 변하는 수이고, *와 =은 문자입니다.
따라서, c&" * "&r&" = "&c*r이 되는 것입니다.
보기 좋도록 문자 좌우에 공백 한 칸씩을 넣었습니다.
수식에서 r과 c의 위치를 바꾸면 아래와 같이 구구단이 세로가 아닌 가로로 만들어집니다.
'Excel' 카테고리의 다른 글
마지막 반복 문자 이후의 문자열 추출하기 (2) (0) | 2024.01.16 |
---|---|
마지막 반복 문자 이후의 문자열 추출하기 (1) (2) | 2024.01.15 |
진행 상태 표시 - 완료, 지연, 진행필요, 미완료(2) (2) | 2024.01.06 |
진행 상태 표시 - 완료, 지연, 진행필요, 미완료(1) (0) | 2024.01.06 |
동일 열에서 날짜가 다른지 비교하기 (0) | 2024.01.03 |