본문 바로가기
업무자동화

엑셀함수를 입력 하기

by 감튜 2023. 3. 20.
반응형

일단 엑셀 함수에 대한 이해도가 있어야 합니다. A1 셀에는 1이라는 값을 입력했습니다. B1에는 A1보다 3만큼 더 큰 수를 입력하고 싶어서, 직접 4를 입력하기보다 '=A1+3'이라는 식을 써도 됩니다. 엑셀을 사용할 줄 아시는 분들이라며 이 정도는 하실 수 있을 겁니다. 

 

그럼 파이썬으로도 한번 해 볼까요?

엑셀파일을 하나 만들어주세요 A1 부터 A10까지 1부터 10까지 넣어줍니다. 그리고 나면 이름을 일단 function.xlsx라고 하겠습니다. 

 

 

 

 

 

 

 

 

기존의 excel.py 내용을 지우고 다음 처럼 써주세요. 3번 줄에서는 function.xlsx라고 바뀌어야겠죠? 당연하게 파일을 다른 걸 사용해야 하니까. 

 

4번째 줄에는 aa라고 했던 것은 ws라고 표현했습니다. aa 도 상관은 없지만 우리가 나중에 이 코드를 다시 봤을 때 이해도를 높이려면 흔히 쓰는 표현이나 의미가 담긴 표현으로 적어둬야 기억에 더 오래갈 수 있겠죠? worksheet의 약자 ws입니다. 일반적으로 엑셀 파일을 만들면 첫 번째 시트에는 Sheet1이라고 되어있을 겁니다. 그렇게 표현해 두는 게 보편적입니다.

 

이제 함수를 입력 해 보겠습니다.

ws['B1']="=A1+3"

함수를 입력 하는 방법은 지난 시간 셀 값을 입력하는 방법과 같아요. 함수를 그대로 써 주면 됩니다. 여기서 중요한 건 "="를 꼭 넣어줘야 합니다. 엑셀에 이렇게 넣어두면 엑셀은 등호로 시작하는 건 모두 함수를 받아들이면 된다고 생각하면 됩니다. 즉, 엑셀에 있는 모든 함수들은 "="와 함께 쓸 수 있습니다. 여러분이 알고 계시는 엑셀의 모든 함수들은 전부 사용이 가능하니 어렵지 않게 함수를 쓸 수 있습니다. 

 

그리고 나머지

wb.save('function.xlsx')
wb.close()

는 aa만 wb로 바꿔서 써주시면 됩니다. 마우스 오른쪽 버튼을 눌러 실행 해 볼까요?

Run 'excel' 버튼 을 누르시면 실행이 됩니다. 파일을 오류가 생기시는 분들은 혹시 엑셀 파일을 열어 두셨나 확인해 보세요. 만약 열려있다면 컴퓨터가 엑셀파일을 열고 수정하고 닫아야 하는 데 이미 열려있는 파일은 수정이 불가하므로 엑셀 파일을 닫고 나서 다시 한번 실행해 보세요. 위쪽 그림처럼 "B2"에 함수결과에 해당하는 값이 생깁니다. 

 

만족하셨나요? 여기서 만족하실 수 있겠지만 그렇게 되면 모든 셀 하나하나마다 일일이 입력해야 하는데, 그렇다면 지난번에 했던 for 구문을 이용해 보겠습니다.

from openpyxl import load_workbook

wb = load_workbook(filename='function.xlsx')
ws = wb['Sheet1']

for j in range(2,6):
    for i in range(1,11):
        ws.cell(column=j,row=i, value=(ws.cell(column=j-1,row=i).value+3))

wb.save('function.xlsx')
wb.close()

 

for 구문 안으로 들어가서 ws.cell 로 시작하는 걸 보겠습니다. 

ws.  ("ws의 기능(함수)를 쓰자"라는 뜻입니다.)

 

ws.cell("cell 관련된 내용들을 수정 혹은 내용을 가져올 수 있습니다.", column= 열번호, row=행번호, value=셀에 넣을 값 )

일단은 이정도만 알아보겠습니다. 

엑셀의 열은 번호가 아닌 문자열로 되어있습니다. A, B, C, D, E, F, 등등 그런데 함수에서 FOR 구문은 숫자로 쓰기가 편리하므로 openpyxl에서는 숫자로 받아들일 수 있도록 해 두었습니다. A열은 1열, B열은 2열.

행번호는 그냥 번호와 같으니 그대로 쓰시면 되겠습니다. 

마지막으로 value 는 셀에 넣을 값이나, 함수 등등을 넣고 싶은 내용을 쓰면 됩니다. 그럼 우리의 목적은 왼쪽 cell에 있는 값에 3을 더해서 오른쪽 더하자가 목표입니다. 일단 제가 넣고 싶은 셀이 (2열, 3행)이라고 하면 , (1열, 3행) 에있는 cell에 있는 값에 더해줘야 하겠죠? (j열, i행)에 값을 넣기 위해 value=((j-1) 열, 3행). vlaue +3을 쓰게 되면 됩니다.

써주고 싶은 칸의 수만큼 행과 열의 개수를 j 와 i의 range를 통해 수정하면 되겠습니다.

우리가 여러번 직접 계산하거나, 입력하는 번거로운 점을 줄이고 단 8줄 만의 코드로 입력한 결과 물입니다.

 

힘내세요!! 할 수 있습니다. 이젠 다 왔습니다. 큰 구조에 대해서는 전부 다 학습했어요. 세부적인 기능들에 대해서 하나씩 하나씩 살펴보겠습니다.

반응형

댓글