brunch

You can make anything
by writing

C.S.Lewis

by 기획하는 족제비 Apr 03. 2023

ChatGPT야 엑셀 함수 좀 만들어 줘-1

실무에 ChatGPT 적용하기


요즘에 헤드라잇에도 글을 함께 연재 중입니다.

헤드라잇에 올린 글은 이 링크에서 확인할 수 있습니다.




인트로

회사의 플랫폼 리뉴얼 프로젝트가 막바지다. QA도 마무리되어서 오픈 시나리오를 작성하여 점검 중인데, 이번 리뉴얼 때 회원과 예치금 데이터를 마이그레이션 하는 것이 있어서 이에 대한 데이터 점검을 진행해야 한다.


그래서 개발팀이 개발 서버에 데이터를 마이그레이션 하면 해당 데이터를 CSV 데이터로 건네받아 엑셀로 검증을 할 예정이다. 일단 내가 해결해야 할 과제는 2가지.   


① 예치금을 가지고 있는 회원과 해당 회원의 예치금이 정확하게 데이터 마이그레이션이 되었는지 이관 전/후 데이터 크로스 체크

② 회원 정보의 데이터 마이그레이션이 정확히 되었는지 이관 전/후 데이터 크로스 체크


문제는 오랜만에 엑셀 함수를 짜려니 기억이 안 난다는 것. VLOOKUP이랑 IFERROR, IF 이렇게만 써도 충분히 검증하는 함수를 짤 수 있을 것 같은데.. 기억이 나지 않는다. 그리고 직접 정보를 찾아서 다시 학습하기엔 시간이 부족하다.


그래서 결론은 ChatGPT를 활용하기. 이번에 회사에 부탁해서 유료 결제를 한 ChatGPT 4.0를 사용할 생각이다. (근데 엑셀 정도 수준이면 3.5로도 충분할 듯). 점심 시간에 ChatGPT를 통해 엑셀 함수를 미리 짜놓고, 개발팀에게 파일을 전달받으면 바로 테스트할 수 있도록 엑셀 샘플을 만들어서 자체 검증을 할 생각이다.


이번 글은 ChatGPT를 사용하여 문제를 해결하는 과정을 다뤘다.




데이터 마이그레이션 후,
회원별 예치금 누락이나 미스매치가 있는지 체크하기


첫 번째 과제는 ‘예치금을 가지고 있는 회원과 해당 회원의 예치금이 정확하게 데이터 마이그레이션이 되었는지 이관 전/후 데이터 크로스 체크’하는 것이다.


과제를 완료했음을 판단하기 위한 두 가지 조건은 아래와 같다:

① 예치금이 존재하는 이메일(계정)이 모두 정상적으로 이관되어야 한다.

② 각 계정마다 이관 전, 후의 예치금 보유액이 같아야 한다.


이를 테스트하기 위해 만든 엑셀 샘플을 제작했다. (①)‘이관전’ 시트에서는 예치금을 가지고 있는 이메일(계정)이 ‘이관후’ 시트로 모두 올바르게 이관되었는지를 ‘이관 후 이메일 존재 유무’ 컬럼을 통해 확인할 것이고,


(②)‘이관후’ 시트에서는 해당 이메일(계정)의 예치금이 ‘이관전’ 시트와 동일하게 이관되었는지를 ‘이상유무’ 컬럼을 통해 확인할 것이다.


그럼 이제 ChatGPT한테 검증을 위한 함수를 만들어 달라고 해보자. 아래는 사전 검수를 위해 만든 엑셀 샘플 사진.

(좌) 이관전 시트 / (우) 이관후 시트



① 번 조건 해결하기

그러면 ① 번 조건인 ‘이관전’ 시트에서는 예치금을 가지고 있는 이메일(계정)이 ‘이관후’ 시트로 모두 올바르게 이관되었는지를 먼저 해결해 보도록 하자.


1. 명령을 어떻게 할까?

나는 GPT한테 알고리즘과 관련된 명령을 할 때 아래의 단계로 구분해서 하는 편이다:

① ChatGPT가 해야 하는 것을 말한다.

② 예시가 있으면 예시를 건네준다.   

  - 표를 더 정확하게 말해주고 싶으면 Markdown 문법을 사용하거나, Google Docs의 문서 편집기를 사용해 표를 만들고 링크를 ChatGPT한테 주거나, HTML로 작성해서 주면 된다.

  - 나는 안 귀찮을 때 Markdown 문법으로 표를 작성해서 준다.

  - 예시 사진은 아래를 참고한다.

Markdown으로 Table 만들기

ChatGPT를 통해 결과에 도달하는 방법을 알고 싶은 것이기에, 예시의 결과ChatGPT에게 말한다.


2. Prompt를 구성해 보자.

따라서 Prompt를 아래와 같이 구성한다.

① ChatGPT가 해야 하는 것을 말해주고 ( = ‘이관전’ 시트에서는 예치금을 가지고 있는 이메일(계정)이 ‘이관후’ 시트로 모두 올바르게 이관되었는지)

② ChatGPT가 엑셀의 구성을 알 수 있도록 표 예시를 전달한 후에

③ 예시의 결과를 말해줌으로써 결과에 도달하는 방법을 ChatGPT가 알 수 있게 한다.


아래는 그렇게 작성된 Prompt의 예시

Prompt 예시


3. 결과 확인하기

질문을 받은 ChatGPT는 5초도 안되어서 답을 내준다. 아래는 ChatGPT가 짜준 엑셀 함수.

=IF(COUNTIF('이관후'!$A$1:$A$1000, A2) > 0, "존재함", "존재 안함")


ChatGPT가 IF와 COUNTIF를 활용해서 함수를 만들어 줬다. 컬럼의 범위를 지정 안 해줬더니 A컬럼의 경우 1,000행까지로 범위를 일단 잡아줬다.


음, 말이 되는 함수다. 단, COUNTIF를 사용했기 때문에 이메일의 중복 여부는 체크하지 못한다. 따라서 동일한 이메일이 2개 이상 있어도 그냥 ‘존재함’으로 결과를 뱉어낼 것이다.


이것은 조건을 철저하게 걸지 않은 내 탓이다. 하지만 괜찮다. 어차피 중복 제거를 한 상태로 데이터를 넘겨받을 예정이기 때문에 그냥 이 함수를 사용하도록 한다. 만약 그렇지 않은 상황이라면 중복 제거까지 확인할 수 있도록 함수를 수정해 달라고 ChatGPT한테 부탁하면 된다.


아래는 ChatGPT의 대답.

ChatGPT의 대답


4. 문제가 해결됐는지 확인하기

컬럼의 이름까지 ChatGPT에게 알려줬기 때문에 딱히 함수에서 수정할 것이 없다. 따라서 ①번 조건인 ‘이관전’ 시트에서는 예치금을 가지고 있는 이메일(계정)이 ‘이관후’ 시트로 모두 올바르게 이관되었는지는 이렇게 확인을 하면 되겠다. 아래는 성공한 사진.

ChatGPT가 원하던 결과를 정확하게 표기하는 함수를 만들어 주었다.




2번 조건 확인하는 것과 결과는 2부에서 작성할 예정.


ⓒ 327roy

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari