[Excel VBA] ChatGPT를

(Excel VBA) Excel에 ChatGPT 적용


이번에는 내가 아는 최고의 엑셀 유튜버라고 생각하는 오빠두 엑셀 유튜브 영상을 참고하여 엑셀에 ChatGPT API를 적용해 보고자 한다.


1. 무엇을 하고 싶습니까?

1) 이력서 및 보고서 키워드 추출


2) 제목/키워드 입력만으로 보고서 자동 완성



2. 기본준비

1) 샘플 파일 다운로드

빠른 VBA-15-ChatGPT-x-Excel-Integrating-Practice-Example-File.xlsx
0.12MB


2) ChatGPT 로그인 및 API 키 발급

  1. ChatGPT에 로그인 : 아래 링크를 클릭하시면 OpanAI의 ChatGPT 메인 페이지로 이동합니다.

    오른쪽 상단 API 버튼 클릭하다.


    ChatGPT 메인 페이지 우측 상단 API 버튼을 클릭합니다.

  2. 이미 회원 ID가 있는 경우 “LOGIN” 버튼을 클릭하여 로그인하십시오. 신분증이 없다면, “SIGN UP” 버튼을 클릭하여 회원가입 및 로그인을 합니다.

    기존 구글 아이디로 간편하게 로그인 하실 수 있습니다.



    LOGIN 또는 REGISTER 버튼을 클릭하여 회원가입을 합니다.

    오빠의 팁 : 이미 회원이신 경우, 가입 후 3개월이 지나면 $18 무료 크레딧이 만료되고 결제 수단이 등록된 것입니다.

    해야 할 수도 있습니다.


    강의 진행중”#실수!
    : 현재 할당량을 초과했습니다.

    요금제 및 결제 세부정보를 확인하세요.
    ” 오류 메시지가 뜨면 마지막에 알려드린 결제 수단을 등록하고 강의를 진행하세요.
  3. ChatGPT API 키 발급 : 등록 후 오른쪽 상단의 아이콘을 클릭 – (API 키 보기)로 이동합니다.

    하다.



    오른쪽 상단에서 회원 정보 – API 키 보기를 클릭합니다.

  4. 새 페이지로 전환하면 중간에 (+Create new secret key) 버튼을 클릭하여 API 키를 발급합니다.

    것이 가능하다.

    발급된 키를 복사하여 메모장에 붙여넣고 안전한 곳에 보관하세요.

    가운데 버튼을 클릭하여 OpenAI API 키를 발급합니다.

    오빠의 팁 : API Key는 서비스를 이용하기 위한 회원카드 및 비밀번호와 동일한 개념입니다.

    그러므로 외부로 유출되지 않도록 안전하게 관리조심해!
    API 키를 잊어버린 경우 기존 API를 제거한 후 새 API 키를 발급받아 사용할 수 있습니다.

3) 엑셀 VBA 적용

  1. ChatGPT 마스터 코드 추가 : 샘플 파일을 실행한 후, (개발 도구) – (VisualBasic) 버튼을 클릭합니다.

    (개발도구) 탭이 보이지 않을 경우, 리본 메뉴에서 우클릭 후 (리본 사용자 정의)에서 개발도구를 활성화하고 확인 버튼을 클릭하여 개발도구를 등록할 수 있습니다.

매크로 편집기가 실행 중일 때 (삽입) – (모듈) 탭을 클릭하여 새 모듈을 추가합니다.



개발자 도구 – Visual Basic 버튼을 클릭하여 매크로 편집기를 시작합니다.


삽입 – 새 모듈을 추가하려면 모듈을 클릭합니다.

2. 추가된 모듈 내부, 홈페이지 공개 Excel ChatGPT 통합을 위한 마스터 코드 복사/붙여넣기 자세한 사항은 아래 마스터코드를 참고해주세요.

더보기

Const APIKey As String = "API키" '<- API 키를 입력합니다.

Const APIUrl As String = "https://api.openai.com/v1/completions" '---------------------------- ▼▼ 사용할 명령문을 이 안에 작성하세요 ▼▼ ------------------------------- '■xGPT_Run 함수 'xGPT_Run "입력셀주소", "출력셀주소", (List출력여부(True/False)) '예) xGPT_Run "C6", "B8" Sub MyGPT_Test1() End Sub Sub MyGPT_Test2() End Sub '---------------------------- ▲▲ 사용할 명령문을 이 안에 작성하세요 ▲▲ ------------------------------- Function xGPT(sRequest, Optional Temperature As Double = 0, Optional Max_Tokens As Integer = 0) '■ GPT 모델 설명은 아래 링크를 참고하세요. 'https://platform.openai.com/docs/models/gpt-3 '■ 비용에 대한 설명은 아래 링크를 참고하세요. 'https://openai.com/api/pricing/ '■ 비용 요약 '1000토큰 = 한글 450~500자 or 영어 750단어 or A4용지 절반 분량 'davinci는 최대 4000토큰 지원 ≒ 약 A2장 분량 입/출력 가능 'davinci 모델(가장 좋은 성능) : 1000토큰 당 24원 (A4용지 한장 ≒ 50원) 'curie 모델(보편적 성능, 가성비 좋음) : 1000토큰당 2.4원 (A4용지 한장 ≒ 5원) Application.EnableEvents = False If sRequest = "" Then xGPT = "": Exit Function Dim GPTModel As String: GPTModel = "text-davinci-003" '"text-davinci-003" '또는 "text-curie-001" If Max_Tokens = 0 Then If GPTModel = "text-curie-001" Then Max_Tokens = 1024 If GPTModel = "text-davinci-003" Then Max_Tokens = 2000 End If Dim vHeader As Variant: ReDim vHeader(0 To 1) vHeader(0) = Array("Content-Type", "application/json") vHeader(1) = Array("Authorization", "Bearer " & APIKey) Dim bodyJSON As String Dim sResult As String sRequest = Replace(Replace(Replace(Replace(sRequest, Chr(10), "\n"), Chr(13), "\n"), Chr(9), "\t"), """", "\""") bodyJSON = "{" bodyJSON = bodyJSON & """model"" : """ & GPTModel & """, " bodyJSON = bodyJSON & """prompt"" : """ & sRequest & """, " bodyJSON = bodyJSON & """temperature"" : " & Temperature & ", " bodyJSON = bodyJSON & """max_tokens"" : " & Max_Tokens bodyJSON = bodyJSON & "}" sResult = GetHttp(APIUrl, bodyJSON, RequestHeader:=vHeader, RequestType:="POST").Body.innerHTML If InStr(1, sResult, """error"":") = 0 Then sResult = Splitter(sResult, "({""text"":""", """,""") Do While Left(sResult, 2) = "\n" sResult = Right(sResult, Len(sResult) - 2) Loop sResult = Replace(Replace(sResult, "\n", vbNewLine), "\""", """") xGPT = sResult Else sResult = Splitter(sResult, """message"": """, """,") xGPT = "#Error!
: " & sResult End If Application.EnableEvents = True End Function Sub xGPT_Run(sPromptRange As String, sPrintRange As String, Optional isList As Boolean = True, Optional Temparature As Double = 0, Optional Max_Tokens As Integer = 2500) Dim WS As Worksheet: Set WS = ActiveSheet Dim PromptRange As Range: Set PromptRange = WS.Range(sPromptRange) Dim PrintRange As Range: Set PrintRange = WS.Range(sPrintRange) Dim vArrray As Variant Dim ArrCount As Long If isList = True Then vArray = xGPT_List(PromptRange.Value, Temparature, Max_Tokens) If PrintRange.Value <> "" Then PrintRange.CurrentRegion.ClearContents PrintRange.Resize(UBound(vArray), 1) = vArray Else PrintRange.Value = xGPT(PromptRange.Value, Temparature, Max_Tokens) End If MsgBox "요청하신 작업이 완료되었습니다.

" End Sub Function xGPT_List(sRequest, Optional Temperature As Double = 0, Optional Max_Tokens As Integer = 2500) Dim sResult As String Dim vResult As Variant: Dim vReturn As Variant Dim i As Long sResult = xGPT(sRequest, Temperature) vResult = Split(sResult, vbNewLine) ReDim vReturn(1 To UBound(vResult) + 1, 1 To 1) For i = LBound(vResult) To UBound(vResult) vReturn(i + 1, 1) = Trim(vResult(i)) Next xGPT_List = vReturn End Function Function GetHttp(URL As String, Optional formText As String, _ Optional isWinHttp As Boolean = False, _ Optional RequestHeader As Variant, _ Optional includeMeta As Boolean = False, _ Optional RequestType As String = "GET") As Object '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ GetHttp 함수 '▶ 웹에서 데이터를 받아옵니다.

'▶ 인수 설명 '_____________URL : 데이터를 스크랩할 웹 페이지 주소입니다.

'_____________formText : Encoding 된 FormText 형식으로 보내야 할 경우, Send String에 쿼리문을 추가합니다.

'_____________isWinHttp : WinHTTP 로 요청할지 여부입니다.

Redirect가 필요할 경우 True로 입력하여 WinHttp 요청을 전송합니다.

'_____________RequestHeader : RequestHeader를 배열로 입력합니다.

반드시 짝수(한 쌍씩 이루어진) 개수로 입력되어야 합니다.

'_____________includeMeta : TRUE 일 경우 HTML 문서위로 ResponseText를 강제 입력합니다.

Meta값이 포함되어 HTML이 작성되며 innerText를 사용할 수 없습니다.

기본값은 False 입니다.

'_____________RequestType : 요청방식입니다.

기본값은 "GET"입니다.

'▶ 사용 예제 'Dim HtmlResult As Object 'Set htmlResult = GetHttp("https://www.naver.com") 'msgbox htmlResult.body.innerHTML '############################################################### Dim oHTMLDoc As Object: Dim objHTTP As Object Dim HTMLDoc As Object Dim i As Long: Dim blnAgent As Boolean: blnAgent = False Dim sUserAgent As String: sUserAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36" Application.DisplayAlerts = False If Left(URL, 4) <> "http" Then URL = "http://" & URL Set oHTMLDoc = CreateObject("HtmlFile") Set HTMLDoc = CreateObject("HtmlFile") If isWinHttp = False Then Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") Else Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") End If objHTTP.setTimeouts 1200000, 1200000, 1200000, 1200000 '응답 대기시간 120초 objHTTP.Open RequestType, URL, False If Not IsMissing(RequestHeader) Then Dim vRequestHeader As Variant For Each vRequestHeader In RequestHeader Dim uHeader As Long: Dim Lheader As Long: Dim steps As Long uHeader = UBound(vRequestHeader): Lheader = LBound(vRequestHeader) If (uHeader - Lheader) Mod 2 = 0 Then GetHttp = CVErr(xlValue): Exit Function For i = Lheader To uHeader Step 2 If vRequestHeader(i) = "User-Agent" Then blnAgent = True objHTTP.setRequestHeader vRequestHeader(i), vRequestHeader(i + 1) Next Next End If If blnAgent = False Then objHTTP.setRequestHeader "User-Agent", sUserAgent objHTTP.send formText If includeMeta = False Then With oHTMLDoc .Open .Write objHTTP.responseText .Close End With Else oHTMLDoc.Body.innerHTML = objHTTP.responseText End If Set GetHttp = oHTMLDoc Set oHTMLDoc = Nothing Set objHTTP = Nothing Application.DisplayAlerts = True End Function Function Splitter(v As Variant, Cutter As String, Optional Trimmer As String) '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ Splitter 함수 '▶ Cutter ~ Timmer 사이의 문자를 추출합니다.

(Timmer가 빈칸일 경우 Cutter 이후 문자열을 추출합니다.

) '▶ 인수 설명 '_____________v : 문자열입니다.

'_________Cutter : 문자열 절삭을 시작할 텍스트입니다.

'_________Trimmer : 문자열 절삭을 종료할 텍스트입니다.

(선택인수) '▶ 사용 예제 'Dim s As String 's = "{sa;b132@drama#weekend;aabbcc" 's = Splitter(s, "@", "#") 'msgbox s '--> "drama"를 반환합니다.

'############################################################### Dim vaArr As Variant On Error GoTo EH: vaArr = Split(v, Cutter)(1) If Not IsMissing(Trimmer) Then vaArr = Split(vaArr, Trimmer)(0) Splitter = vaArr Exit Function EH: Splitter = "" End Function Function GoogleTranslate(OriginalText, _ Optional sFrom As String = "auto", _ Optional sTo As String = "") As String '■변수 선언 및 할당 Dim strURL As String: Dim objHTTP As Object Dim objHTML As Object: Dim objDivs As Object Dim objDiv As Variant: Dim strResult As String Dim vaRng As Variant: Dim Rng As Variant If sTo = "" Then If Application.LanguageSettings.LanguageID(msoLanguageIDUI) = 1042 Then sTo = "ko" Else sTo = "en" End If If TypeName(OriginalText) = "Range" Then For Each vaRng In OriginalText For Each Rng In vaRng If Rng <> "" Then strtext = strtext & Rng & vbNewLine Else strtext = strtext & vbNewLine End If Next Next Else strtext = OriginalText End If '■ 구글 번역 API 요청 strtext = ENCODEURL(strtext) strURL = "https://translate.google.com/m?hl=" & sFrom & _ "&sl=" & sFrom & _ "&tl=" & sTo & _ "&ie=UTF-8&prev=_m&q=" & strtext On Error GoTo EH: Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") objHTTP.Open "GET", strURL, False objHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36" objHTTP.send "" Set objHTML = CreateObject("htmlfile") With objHTML .Open .Write objHTTP.responseText .Close End With '■ 번역 결과 확인 If InStr(1, objHTTP.responseText, "Error 413") > 0 Then GoogleTranslate = "#Request Too Large!
": Exit Function Set objDivs = objHTML.getElementsByTagName("div") For Each objDiv In objDivs If objDiv.className = "result-container" Then strResult = objDiv.innerHTML: Exit For End If Next objDiv '■ 결과값 출력 GoogleTranslate = Convert_Html_Entities(strResult) Set objHTML = Nothing: Set objHTTP = Nothing Exit Function EH: GoogleTranslate = "#TimeOut" Set objHTML = Nothing: Set objHTTP = Nothing End Function Function Convert_Html_Entities(c) c = Replace(c, "&quot;", """") c = Replace(c, "&amp;", "&") c = Replace(c, "&apos;", "'") c = Replace(c, "&lt;", "<") c = Replace(c, "&gt;", ">") c = Replace(c, "&nbsp;", vbNewLine) c = Replace(c, "&iexcl;", "¡") c = Replace(c, "&cent;", "¢") c = Replace(c, "&pound;", "£") c = Replace(c, "&curren;", "¤") c = Replace(c, "&yen;", "¥") c = Replace(c, "&brvbar;", "|") c = Replace(c, "&sect;", "§") c = Replace(c, "&uml;", "¨") c = Replace(c, "&copy;", "ⓒ") c = Replace(c, "&ordf;", "ª") c = Replace(c, "&laquo;", "≪") c = Replace(c, "&not;", "¬") c = Replace(c, "&reg;", "®") c = Replace(c, "&deg;", "°") c = Replace(c, "&plusmn;", "±") c = Replace(c, "&sup2;", "²") c = Replace(c, "&sup3;", "³") c = Replace(c, "&acute;", "´") c = Replace(c, "&micro;", "μ") c = Replace(c, "&para;", "¶") c = Replace(c, "&middot;", "·") c = Replace(c, "&cedil;", "¸") c = Replace(c, "&sup1;", "¹") c = Replace(c, "&ordm;", "º") c = Replace(c, "&raquo;", "≫") c = Replace(c, "&frac14;", "¼") c = Replace(c, "&frac12;", "½") c = Replace(c, "&frac34;", "¾") c = Replace(c, "&iquest;", "¿") c = Replace(c, "&times;", "×") c = Replace(c, "&szlig;", "ß") c = Replace(c, "&divide;", "÷") c = Replace(c, "&yuml;", "y") c = Replace(c, "&circ;", "^") c = Replace(c, "&tilde;", "~") c = Replace(c, "&mdash;", "-") c = Replace(c, "&lsquo;", "'") c = Replace(c, "&rsquo;", "'") c = Replace(c, "&sbquo;", "'") c = Replace(c, "&ldquo;", """") c = Replace(c, "&rdquo;", """") c = Replace(c, "&bdquo;", """") c = Replace(c, "&dagger;", "†") c = Replace(c, "&Dagger;", "‡") c = Replace(c, "&hellip;", "…") c = Replace(c, "&permil;", "‰") c = Replace(c, "&lsaquo;", "?") c = Replace(c, "&rsaquo;", "?") c = Replace(c, "&euro;", "€") c = Replace(c, "&trade;", "™") c = Replace(c, "&rsquo;", "’") c = Replace(c, "&laquo;", "≪") c = Replace(c, "&raquo;", "≫") c = Replace(c, "&cent;", "¢") c = Replace(c, "&copy;", "ⓒ") c = Replace(c, "&micro;", "μ") c = Replace(c, "&pound;", "£") c = Replace(c, "&yen;", "¥") c = Replace(c, "&yuml;", "y") c = Replace(c, "&acute;", "´") Convert_Html_Entities = c End Function Function ENCODEURL(varText As Variant, Optional blnEncode = True) '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ EncodeURL 함수 '▶ 한글/영문, 특수기호가 포함된 문자열을 웹 URL 표준 주소로 변환합니다.

'▶ 인수 설명 '_____________varTest : 표준 URL 주소로 변환할 문자열입니다.

'_____________blnEncode : TRUE 일 경우 결과값을 출력합니다.

'▶ 사용 예제 's = "http://www.google.com/search=사과" 's = ENCODEURL(s) 'MsgBox s '############################################################### Static objHtmlfile As Object If objHtmlfile Is Nothing Then Set objHtmlfile = CreateObject("htmlfile") With objHtmlfile.parentWindow .execScript "function encode(s) {return encodeURIComponent(s)}", "jscript" End With End If If blnEncode Then ENCODEURL = objHtmlfile.parentWindow.encode(varText) End If End Function

  1. 홈페이지에 준비한 마스터코드를 모듈에 붙여넣기 합니다.

2. 코드에 API 키 입력 : 삽입된 명령 출발점에 도착하면 API 키를 입력하십시오.여기에 이전 단계에서 생성한 API 키를 복사/붙여넣기 하면 Excel ChatGPT 연동을 위한 모든 준비가 완료됩니다!
이제 엑셀 ChatGPT 연동을 연습해 볼까요?


이전 단계에서 발급받은 API 키를 마스터 코드에 붙여넣으면 모든 설정이 완료됩니다.


3. ChatGPT 사용

A. 기능 입력으로 사용

  1. xGPT 기능 사용 : 샘플 파일의 첫 번째 시트인 (Simple Question) 시트로 이동합니다.

    ‘질문을 적어주세요!
    ’ 오른쪽 셀 셀 C5에 아래와 같이 간단한 질문을 작성합니다.

    하다.

    ① 안녕하세요!
    오늘은 어때? (매일 질문)

    ② 김치찌개와 관련된 50자 내외의 연애시를 애인에게 써주세요. (시 쓰기)
    ③ 엑셀에서 A1:D100 범위에 입력된 데이터 중 A열을 참조하여 C열에 입력된 값을 조회하는 함수를 작성한다.

    (엑셀 수식 작성하기)

    ④ 헬스장 이용계약 해지 시 회사가 잔액을 환불하지 않을 경우 법률자문을 통해 대응하시기 바랍니다.

    (법률 자문을 구하십시오)
  2. 그런 다음 GPT 결과를 출력합니다.

    셀 B8을 강조 표시하고 =x를 입력합니다.

    그러면 아래 이미지와 같이 =xGPT 함수가나온다
    기능을 선택한 후 TAB 키를 눌러 입력하거나 xGPT 기능을 직접 입력하십시오.

    =x를 입력하여 목록에 표시된 xGPT 함수를 호출합니다.

  3. 그런 다음 아래와 같이 xGPT 함수를 작성합니다.

    =xGPT( GPT 문, (무작위), (최대 토큰 수) )
    =xGPT(C5, C6)

    무작위성: 0과 1 사이의 숫자입니다.

    기본값은 0입니다.


    – 0에 가까울수록 구체적인 답(구체적인 단어)을 사용하고, 1에 가까울수록 다양한 답을 얻을 수 있다.


    – 정확한 답이 필요할 때(법률 자문, 공식 작성, 코드 작성 등) 0 근처에서 사용하고, 다른 답이 나올 때(시 쓰기, 주제 설정) 1 근처에서 사용하세요.

    최대 토큰 수: 각 GPT 모델에 따라 설정된 최대 토큰 수입니다.

    기본값은 최대 토큰 수의 절반입니다.


    – 토큰 수는 입력 토큰 + 출력 토큰의 합입니다.

    사용된 GPT 모델의 최대 토큰이 2048이고 2000개의 토큰을 입력 값으로 사용할 경우 48개의 토큰만 출력 값으로 출력할 수 있습니다.


    – 토큰당 비용은 사용하는 GPT 모델에 따라 다르게 계산됩니다.


    생성한 GPT 문과 임의성을 선택하여 xGPT 함수를 생성합니다.

  4. 함수를 호출한 후 ChatGPT 응답을 받을 때까지 잠시 기다립니다.

    GPT 응답을 확인했다면, 작성한 함수를 삭제한 후 다음 시트로 이동합니다.



    xGPT 기능을 입력하면 질문에 대한 GPT 답변이 제공됩니다.

    오빠의 팁 : GPT 답변은 ① 사용언어(한글/영문), ② 출력되는 글자 수, ③ 서버 사용량설정에 따라 15~60초가 소요될 수 있습니다.

  1. xGPT_List 기능 사용 : xGPT 함수는 결과를 셀에 문장 형태로 반환합니다.

    따라서 여러 항목을 GPT 결과로 출력하면 xGPT_List 기능을 사용할 때 각 항목을 여러 개의 셀로 나누어 출력합니다.

    당신은 할 수 있습니다.

    =xGPT_목록( GPT 문, (무작위), (최대 토큰 수) )

    ‘ 여러 줄로 반환된 GPT 응답을 범위로 출력합니다.


    엑셀 2019 이전 버전에서는 큰 범위를 선택하면서 함수를 작성한 후 Ctrl + Shift + Enter를 이용하여 입력합니다.

    오빠의 팁 : 그러나 xGPT_List 함수는 배열 수식이므로, Excel 2019 이전 버전에서는 큰 범위를 미리 선택하는 동안 =xGPT_List 함수를 입력합니다.

    그런 다음 Ctrl + Shift + Enter를 눌러야 합니다.

    아르 자형로 입력
    (배열 수식) 주의하세요. 엑셀 2021/M365 버전에서는 일반함수와 동일하게 입력합니다.

  2. 샘플 파일의 두 번째 시트(Getting Ideas)로 이동한 후 아이디어를 얻고자 하는 주제, 아이디어 개수, 항목, 줄 바꿈을 구분자로 선택합니다.

    모두 선택하면 C10 셀에 GPT 명령이 자동으로 생성됩니다.

    기능은 최대한 미리 적어두었습니다.



    주제, 아이디어, 항목의 개수를 선택하면 GPT 명령어가 생성되도록 기능이 미리 준비되어 있습니다.

  3. 아래의 GPT 결과 출력 셀 B13을 선택한 후 아래와 같이 xGPT_List 함수를 작성합니다.

    함수를 작성한 후 잠시 기다리면 입력한 주제에 대한 많은 아이디어가 반환됩니다.

    =xGPT_목록(C10,C11)

    xGPT_List 함수를 입력합니다.

    오빠의 팁 : Excel 2019 이하 사용자의 경우: B13:B30의 넓은 범위를 미리 선택한 후 xGPT_List 함수를 작성하고 Ctrl+Shift+Enter로 입력합니다.

    하다.

  4. 모든 xGPT_List 결과를 확인했다면, 작성된 함수를 모두 삭제한 후 다음 시트로 이동합니다.



    xGPT_List 함수를 사용하여 여러 항목에서 반환된 GPT 결과를 범위로 출력할 수 있습니다.


xGPT 기능 사용 시 주의사항

Excel 시트에 작성된 모든 기능은 시트의 값이 변경되거나 파일이 다시 실행될 때마다 반복적으로 실행됩니다.

따라서 API를 호출하는 xGPT 함수와 xGPT_List 함수의 경우 일회용으로 편리하지만 시트에 함수를 작성하면 함수가 계속 실행됩니다.

① 파일 속도 저하 ② 불필요한 API 호출로 인한 비용 발생있습니다.


GPT 함수를 함수로 사용하면 시트의 값이 변경될 때마다 계속 실행되어 파일 속도가 느려질 수 있습니다.

따라서 엑셀 GPT 기능을 반복적으로 사용해야 할 경우 버튼 클릭 한번으로 사용하는 것이 더 합리적입니다.


B. 원클릭으로 사용하는 방법

  1. GPT 실행 명령 작성 : 샘플 파일의 세 번째 시트인 (키워드 분석) 시트로 전환합니다.

    이번에는 엑셀에서 GPT를 호출하는 매크로를 직접 작성한 후, 버튼 하나로 쉽게 Excel-ChatGPT 연결하는 방법알아 보자 (VBA 코드 한줄로 가능!
    ) 앞서 키워드 분석 시트에 적어둔 이력서 중 하나를 복사한 후, 커서가 깜박이는 동안 셀 C4를 두 번 클릭하여 값으로 붙여 넣습니다.

    하다.



    C4 셀에 이력서를 붙여넣어 중요한 키워드를 값 형태로 추출합니다.

  1. (개발 도구) 탭 – 버튼(Visual Basic)을 클릭하거나 핫키 오래된 + F11 매크로 편집기를 시작하려면 여기를 클릭하십시오.왼쪽 프로젝트 창에서 이전 단계에서 추가한 모듈을 더블 클릭하면 붙여넣은 코드를 확인할 수 있습니다.

    코드 중간에 미리 작성된 MyGPT_Test1 문을 MyGPT_xxxxx 형식의 원하는 이름으로 변경합니다.

    그 후 더 많은 명령어가 필요하시면 아래 코드를 복사/붙여넣기 하시거나 원하는 이름으로 명령어를 작성하셔서 사용하시면 됩니다.

    오늘 강의에서 명령문의 이름을 MyGPT_Keyword로 변경내가 할게.

    버튼 클릭 한 번으로 GPT를 실행하는 매크로 명령을 작성합니다.

  2. 이제 명령문의 Sub~End Sub 사이에 매크로 코드 줄을 삽입하기만 하면 됩니다.

    이미 코드를 작성했습니다.

    빨리 xGPT_실행 함수보지마.
    xGPT_실행 “셀 주소 입력”, “셀 주소 출력”, (리스트 출력)

    셀 주소 입력: GPT 문이 작성된 셀 주소를 작성하십시오.
    출력 셀 주소: GPT 결과를 출력할 셀 주소를 씁니다.


    목록 출력: True인 경우 GPT 결과는 출력 셀 주소의 시작 셀을 기준으로 범위로 반환됩니다.

  3. (키워드 분석) GPT 명령의 리프에서 셀 주소 “C6” 입력, 출력 셀 주소 “B8”, 목록 출력 옵션은 True입니다.

    따라서 아래와 같이 코드 한 줄만 작성하면 모든 것이 완료됩니다.

    xGPT_실행 “C6”, “B8”, 참

    xGPT_Run 명령으로 엑셀에서 GPT 기능을 쉽게 실행할 수 있습니다.

  4. 버튼 클릭으로 GPT 실행 : 모든 코드를 작성한 후 매크로 편집기를 닫고 (키워드 분석) 시트로 돌아갑니다.

    잎사귀 (GPT 실행 버튼) 오른쪽 클릭 – 선택(매크로 지정)당신은 방금 썼다 목록에 “MyGPT_Keyword” 명령이 나타납니다.

    것이 가능하다.

    명령을 선택한 후 (확인) 버튼을 클릭하면 해당 버튼에 대한 매크로가 등록됩니다.



    이전에 시트에 추가한 버튼에 대해 생성된 GPT 실행문을 등록합니다.

  5. 지금 버튼을 클릭하세요!
    이력서의 중요 키워드는 GPT 결과로 반환됩니다.

    것이 가능하다.



    버튼을 클릭하면 매크로가 실행되어 이력서에서 핵심 키워드를 추출합니다.


4. 추가 예시 – 재무제표 분석

※ 여기서 가장 중요한 부분은 한국어 쿼리를 영어로 번역하고 gpt 응답을 빠르게 받아 다시 한국어로 번역하는 과정입니다.

지금까지 살펴본 xGPT 기능, xGPT_List 기능, xGPT_Run 매크로를 이용하여 상황에 따라 엑셀과 ChatGPT를 편리하게 연동할 수 있습니다.

ChatGPT와 Excel을 결합하면 실전에서 다양하게 활용할 수 있습니다.

할 수 있습니다.

오늘 우리는 두 가지 예를 봅니다.

  1. 재무제표 분석 : 인터넷에 게시된 자료를 기반으로 학습하는 ChatGPT의 모델 특성상 한국어 학습량이 전체 학습량의 2% 미만을 차지한다고 합니다.

    그러므로 수학적 사실이나 일반적인 주제와 같은 비언어적 콘텐츠의 경우 한국어보다 영어로 GPT를 사용하면 답변이 더 빠르고 정확합니다.

    얻어 질 수있는. 샘플 파일의 네 번째 시트인 시트(재무제표 분석)로 전환한 후 오른쪽에 미리 추가된 삼성전자 링크를 클릭하면 야후증권의 삼성전자 재무제표 페이지로 이동합니다.

    재무 보고서를 페이지로 드래그하여 복사하다.



    링크를 클릭하시면 야후증권의 삼성전자 재무제표 페이지로 이동합니다.

  2. 연간 결산 시트로 돌아가서 복사 재무제표 셀 C4의 값으로 붙여넣기하다.



    복사 후 C4 시트의 셀에 재무제표를 값 형식으로 붙여넣습니다.

  3. 이전 시트(키워드 분석)에서 생성한 매크로의 경우 입력 셀이 “C6 셀”이고 출력 셀이 “B8 셀”이었습니다.

    이번에 사용할 대차대조표도 입력 셀 “C6″과 출력 셀 “B8″로 앞에서 만든 매크로를 사용할 수 있습니다.

    GPT 실행 버튼을 마우스 오른쪽 버튼으로 클릭 – 매크로 지정을 선택하고 이전 단계에서 작성한 MyGPT_Keyword 명령을 등록합니다.

    하다.



    이전 시트의 입력 셀 주소와 출력 셀 주소가 동일하므로 기존 매크로를 그대로 사용합니다.

  4. 버튼을 클릭한 후 잠시만 기다리면 붙여넣기가 완료됩니다.

    재무제표 분석 결과는 GPT 결과로 발행됩니다.

    것이 가능하다.



    버튼을 클릭하면 대차대조표 분석 결과가 출력됩니다.

  5. Google번역 기능을 통한 실시간 번역 : 이제 GoogleTranslate 기능을 사용하여 영어로 출력된 GPT 결과를 한국어로 번역해 보겠습니다.

    =구글 번역기(“번역할 문장”, “원문 언어”, “대상 언어”)

    ‘ 소스 언어의 기본값은 자동입니다.

    기본 대상 언어는 한국어입니다.


    ‘ 한국어 문장을 영어로 번역할 때는 =GoogleTranslate(“Hello.”,”ko”,”en”)라고 씁니다.


    ‘ 기능에서 제공하는 언어 목록은 Google 공식 웹 사이트를 방문하십시오.
    https://cloud.google.com/translate/docs/languages?hl=de

    오빠의 팁 : GoogleTranslate 기능은 Excel ChatGPT 통합의 마스터 코드에 미리 작성된 VBA 기능입니다!
    (이 기능은 Excel에서 기본적으로 제공되지 않습니다.

    하다!
    )


5. 추가 예시 – 자동 완성 보고서

  1. 키워드로 보고서/게시 자동완성 : 엑셀과 ChatGPT를 연동하면 특정 주제(키워드)만 입력하면 A4용지 1~2장 분량의 보고서를 자동으로 생성할 수 있다.

    샘플 파일의 마지막 시트 (보고서 자동 완성) 시트로 이동 후 문서 종류를 선택하고 작성할 주제를 1~5개 자유롭게 입력합니다.

    하다.



    Excel과 ChatGPT를 연동하여 키워드와 주제만으로 보고서/블로그 게시물을 작성할 수 있습니다.

  2. 문서의 종류와 제목을 작성하신 후 구글 번역 기능을 이용하여 영어로 번역해 드리며, 번역된 문장이 GPT 명령으로 작성되도록 셀 C16에 함수를 미리 작성합니다.

    나는했다.



    문서의 종류와 제목을 생성할 때 GPT 명령어를 생성할 수 있는 기능이 준비되어 있습니다.

  3. 이제 이전과 같은 방법으로 매크로 편집기에서 입력 셀 C16과 출력 셀 B18에 GPT를 실행합니다.

    아래 이미지와 같이 xGPT_Run 함수를 작성한 후 생성된 매크로를 GPT Run 버튼에 등록합니다.

    하다.



    매크로를 생성하여 GPT를 실행한 후 생성된 매크로를 버튼에 등록합니다.

    오빠의 팁 : 이번에는 GPT 결과가 범위가 아닌 셀의 문장으로 반환되어야 합니다.

    xGPT_Run 함수의 마지막 인수를 false로 설정합니다.

    하다.

  4. 이제 Run GPT 버튼을 클릭하고 잠시만 기다리세요!
    생성된 키워드/주제에 대한 보고서가 생성됩니다.

    것이 가능하다.



    버튼을 클릭하여 GPT 결과를 영어로 출력하고 결과를 한글로 번역하여 보고서를 완성합니다.


비용에 대하여

ChatGPT 결제수단 등록 및 비용 확인

GPT API 토큰 단위 및 비용 산정 방법

GPT API는 ‘토큰’이라는 단위로 청구됩니다.

GPT 언어 모델의 비용에 대한 자세한 설명은 아래 OpenAI 공식 웹 사이트를 참조하십시오.

https://openai.com/api/pricing/

  1. 다 빈치 (최고의 성능, $0.02(26원) / 1,000토큰최대 4,000개의 토큰 지원)
    창의적인 문제 해결, 주제별 답변, 인과 분석, 문장 이해 및 자동 완성, 질문자의 감정 이해 등 다양한 문제를 해결할 수 있습니다.

    최상의 성능을 제공하기 때문에 처리 속도가 다른 모델보다 느릴 수 있습니다.

  2. 로마 교황청 (범용 성능, 빠른 속도, $0.002(2.6원) / 1,000토큰최대 2,048개의 토큰 지원)
    현재 OpenAI에서 제공하는 여러 언어 모델 중 가장 저렴한 모델입니다.

    Babbage가 수행하는 기능 외에도 문장 내 감정 분석, 문서 요약/정리, 대화형(챗슈트) 기능, Q&A 등이 가능합니다.

  3. 아기 (Ada보다 약간 나은 성능, $0.0005 (KRW0.65) / 1,000 토큰최대 2,048개의 토큰 지원)
    Ada보다 문장 교정 및 추출 성능이 약간 더 좋은 GPT 모델입니다.

  4. 에이다 (최고 속도, $0.0004(0.52원) / 1,000토큰최대 2,048개의 토큰 지원)
    예를 들어 가장 간단한 작업을 수행합니다.

    B. 문장에서 단어 추출 및 문장 교정. 명령(질문, 프롬프트)이 정확할수록 더 나은 결과를 얻을 수 있습니다.

1,000개의 타일로 얼마나 오래 세트를 만들 수 있습니까?

한글은 400~450자, 영문은 750단어를 쓸 수 있습니다.

약 1,000 토큰에 대해 A4 0.5-1 장을 채우십시오.당신은 할 수 있습니다.

(일반적으로 한글의 경우 영어보다 4배 많은 토큰을 사용한다.

그래서 보통은 한글보다는 영어로 GPT를 쓰는게 더 타당합니다.

)

따라서 보고서를 생성하는 데 드는 비용은 Davinci 모델의 경우 A4 장당 약 30-50원, Curie 모델의 경우 A4 장당 약 3-5원입니다.

또는 아래 OpenAI 홈페이지에서 제공하는 토크나이저를 사용하여 생성하려는 보고서 또는 명령 유형의 정확한 토큰을 계산할 수 있습니다.

https://platform.openai.com/tokenizer

최대 토큰은 무엇입니까?

GPT 질문(명령, 프롬프트)으로 사용된 문장의 토큰과 결과로 반환된 문장의 합계보지마. 예를 들어 퀴리 모델은 최대 2,048개의 토큰을 지원하며, 500개의 토큰을 질문으로 사용할 경우 최대 1,548개의 토큰에 해당하는 문장만 출력 값으로 반환할 수 있습니다.

GPT API 결제수단 등록 방법

  1. 결제수단 등록 : OpenAI 계정 설정 페이지로 이동한 후, 왼쪽 탭에서 결제 탭을 클릭합니다.

    – (유료 계정 설정) 버튼을 클릭합니다.

    그런 다음 결제 수단을 등록합니다.



    계정 설정 – 결제 탭에서 결제 수단을 등록할 수 있습니다.

  2. ~ 후에 사용량 탭에서 실시간 OpenAI API 사용량 보기당신은 할 수 있습니다.

    (거의 실시간으로 1분 단위로 검색이 가능합니다.

    )

    사용량 탭에서 실시간 사용량을 볼 수 있습니다.

  3. 사용 한도 설정 : 사용 한도를 설정하고 싶다면, (결제) 탭에서 한도 설정 – (사용 한도)당신은 할 수 있습니다.

    소프트 제한을 초과하면 관리자 계정으로 알림 이메일이 전송되고 하드 제한을 초과하면 API 사용이 제한됩니다.



    결제 – 사용량 한도에서 사용량 한도를 설정할 수 있습니다.