excel - 데이터 셀 순서 거꾸로 뒤집기(바꾸기)
엑셀 함수로 뒤집기
편의상 1부터 6까지의 숫자가 있다고 치자. 우측 열에 거꾸로 뒤집어서 넣을 생각이다.
(숫자로 되어있다면 구지 이렇게 할 필요가 없다. 편의상이라고 했다.)

OFFSET 함수를 활용할 예정이다.
OFFSET 함수는 특정 셀로부터 X열만큼, Y행만큼 떨어진 곳의 값을 반환해준다.
=OFFSET(
기준이 되는 셀,옮기고 싶은 값이 들어있는 셀과의 행간격,
옮기고 싶은 값이 들어있는 셀과의 열간격
)
글로써놓고 보니 나도 잘 모르겠다.
C4 셀에는 B9의 값이 들어와야 하니, 옮기고 싶은 값의 셀과의 행간격은 5가 되겠다.
단순히 5를 입력해도 되지만, 자동 채우기를 해야하는 관계로 아래로 갈수록 5-4-3-2-1이라는 값을 만들어 내야 한다.
숫자가 들어있는 전체 영역의 갯수(6)를 세어 전체 수를 만들고, —————(A)
아래로 하나씩 내려갈때마다 값이 하나씩 증가되는 것을 해당 열의 행번호로 잡았다. ————(B)
이런식이 될테다
=OFFSET(값,A,B)
입력해보면 아래와 같다.
=OFFSET(B$4,COUNTA(B$4:B$9)-ROW(B1),)

** 열 이동은 없으므로 열 인수 입력은 공백으로 둔다.
=OFFSET(B$4,COUNTA(B$4:B$9)-ROW(B1), 열 입력)
기준이 되는 값과 데이터가 들어있는 영역은 변하면 안되기 때문에 절대참조로 해둔다.
결과는 아래와 같다.

단, 1,2,3 행을 삭제하거나 변화를 주면, 수식이 어그러질 수 있다.
사실 이게 귀찮아서, VBA로 했었던거긴 하지만….
엑셀 VBA로 뒤집기
의외로 DB에서 추출한 데이터가 뒤집혀 있는 경우가 많다. 대부분 경우, 엑셀 노가다로 충분하지만, 엑셀에 버튼을 만들어 놓으면 편할 수 있다.
개인적으로 VBA를 몰랐을때 처음으로 시도한 거라 애착이 가고, 회사에서 가장 많이 자주 쓰고 있는 코드이다.

Sub upsidedown()
Dim i As Integer
Dim j As Integer
Dim EndRowNum As Integer
i = ActiveCell.Row
j = ActiveCell.Column
EndRowNum = ActiveCell.End(xlDown).Row - ActiveCell.Row + 1
For k = 1 To EndRowNum
Cells(i + k - 1, j + 1) = Cells(i + EndRowNum - k, j).Value
Next k
End Sub
끝.