Tutorial/다중 통화 송장 추적기

Excel에서 다중 통화 송장 추적기 만들기

EUR, GBP, JPY, IDR 송장을 날짜별 환율 스냅샷과 USD 계산식, 감사 기록으로 관리하는 Excel 통합 문서입니다.

ERexchangerate.dev·2026년 9월 8일 업데이트·8분 읽기

송장 금액은 원래 통화로 보관하고 선택한 날짜의 스냅샷으로 USD를 계산합니다. 날짜, source, data_updated_at, 환율을 함께 저장하므로 게시된 행을 재현할 수 있습니다.

Key points
날짜별 스냅샷과 수식이 포함된 예시 통합 문서입니다.
rate_per_usd는 USD 1당 통화 단위입니다.
게시 행의 source, session, data_updated_at을 보존합니다.
Power Query는 고정값을 덮어쓰지 않고 새 행을 추가합니다.
환율은 참고값이며 세무·회계 조언이 아닙니다.

통합 문서 다운로드

송장 추적기를 다운로드해 Excel에서 엽니다. 예시 송장과 통화별 스냅샷, USD 열, 감사 기록이 포함됩니다.

네 개 시트 이해하기

Invoice Tracker는 송장과 수식을, FX Snapshots는 날짜별 관측을, Audit Trail은 고정 결정을, Read Me는 사용법과 한계를 담습니다.

원래 통화로 송장 추가하기

파란 입력 셀에 ID, 고객, 날짜, 통화, 세금, 환율 날짜, 상태를 입력합니다. Net, Tax, Gross는 송장 통화로 유지합니다.

날짜별 환율 스냅샷 추가하기

실제로 사용한 과거 관측을 추가하고 날짜, 통화, source, market_session, data_updated_at, 환율을 저장합니다. 환율은 USD 1당 송장 통화 단위입니다. EUR-20260602-v1처럼 고유한 Snapshot ID를 사용하고, ID가 정확히 한 행에만 있으며 스냅샷 통화가 인보이스 통화와 같은지 확인하세요. 수정은 v2를 추가하고 v1을 덮어쓰지 않습니다. data_updated_at은 과거 데이터가 갱신된 시각이며 effective_at과 다릅니다.

Representative historical responsecopy
{
  "result": "success",
  "base": "USD",
  "date": "2026-06-02",
  "source": "ecb_daily",
  "sources": { "EUR": "ecb_daily" },
  "market_session": "open",
  "timestamp": "2026-09-08T11:52:18Z",
  "data_updated_at": "2026-06-02T00:00:00Z",
  "is_forward_filled": false,
  "rates": { "EUR": 0.85844 },
  "notice": "Indicative rates, not for settlement."
}

수식으로 계산된 USD 열 확인하기

날짜와 통화를 FX Snapshots와 맞춘 뒤 금액을 FX Rate / USD로 나눕니다. 스냅샷이 없으면 USD 열은 비워 둡니다. 수식은 인보이스100행과 스냅샷100행까지 있습니다. 확장할 때 두 범위를 함께 늘리세요. Posted는 라벨일 뿐 셀을 잠그거나 수식을 자동으로 고정하지 않습니다.

Excel formula · Net USDcopy
=IF(OR(F6<0,G6<0,H6<0,K6="",L6="Missing snapshot ID",L6="Duplicate snapshot ID",L6="Currency mismatch",L6="Invalid rate"),"",F6/K6)

게시된 값 고정하기

게시 후에는 스냅샷 행을 바꾸지 않습니다. 수정이 필요하면 새 행을 추가하고 Audit Trail에 이유를 적습니다.

Power Query로 새 스냅샷 추가하기

Power Query 스크립트는 지정한 날짜와 통화를 가져옵니다. 공유 통합 문서에 API 키를 넣지 마세요. Power Query 출력은 A:I 아홉 열입니다. 먼저 staging 시트에 로드하고 헤더를 제외한 데이터 행만 복사해 7행부터 값으로 붙여넣으세요. Refresh All은 쿼리 출력을 교체하며 불변 이력을 추가하지 않습니다. Windows는 Data → Get Data → From Other Sources → Blank Query, 지원되는 Microsoft 365 Mac은 Data → Get Data → Launch Power Query Editor에서 시작합니다. Anonymous를 선택하고 키가 필요하면 서버 proxy를 사용하세요.

Power Query M · explicit snapshotcopy
let
    SnapshotDate = "2026-06-02",
    Currency = Text.Upper(Text.Trim("EUR")),
    Revision = "v1",
    SelectedDate = Date.FromText(SnapshotDate, [Format = "yyyy-MM-dd", Culture = "en-US"]),
    RelativePath = "v1/" & Date.ToText(SelectedDate, "yyyy-MM-dd") & "/USD",
    Endpoint = "https://api.exchangerate.dev/" & RelativePath & "?symbols=" & Currency,
    Payload = Json.Document(Web.Contents("https://api.exchangerate.dev", [
        RelativePath = RelativePath,
        Query = [symbols = Currency],
        Timeout = #duration(0, 0, 0, 10)
    ])),
    Source = if Payload[base] <> "USD" or Payload[date] <> SnapshotDate
        then error "Unexpected response base or date" else Payload,
    RawRate = Record.Field(Source[rates], Currency),
    Rate = if not Value.Is(RawRate, type number) or RawRate <= 0
        then error "Expected a positive numeric rate" else RawRate,
    SnapshotId = Currency & "-" & Text.Replace(SnapshotDate, "-", "") & "-" & Revision,
    Notes = "Response timestamp=" & Source[timestamp] & "; is_forward_filled=" &
        (if Source[is_forward_filled] then "true" else "false"),
    Snapshot = #table(
        {"Snapshot ID", "Snapshot Date", "Currency", "Source", "Market Session", "Data Updated At (UTC)", "Rate / USD", "API Endpoint", "Notes"},
        {{SnapshotId, SelectedDate, Currency, Record.Field(Source[sources], Currency), Source[market_session], Source[data_updated_at], Rate, Endpoint, Notes}}
    )
in
    Snapshot

감사 기록 보관하기

게시 시점, 스냅샷, source/session, 고정 이유를 기록합니다. 필요한 경우 원본 응답도 보관합니다. Notes에 응답 timestamp와 is_forward_filled를 보존하고 Snapshot ID, 출처, 세션, 수정 이유를 기록하세요.

결과는 보고용으로만 사용하기

이 도구는 보고와 분석을 위한 예시입니다. 세금, 회계, 준법, 결제 금액을 결정하지 않습니다. 예시는100행까지입니다. 수식과 lookup 범위를 함께 확장하세요.

ER
exchangerate.dev
exchangerate.dev

계속 읽기

Reference날짜별 환율 스냅샷 추가하기읽기 TutorialPower Query로 새 스냅샷 추가하기읽기 TutorialPython으로 환율 가져오기읽기
더 많은 비교Fixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
학습Reading source and market_session in your pipelineIndicative vs executable FX rates: what a rates API actually gives youECB 기준환율 설명
실시간 환율EUR/USDGBP/USDUSD/JPY