มีคำถามหรือพบปัญหา? โพสต์ได้ที่ GitHub Discussions

ฟีเจอร์อัตราแลกเปลี่ยนในตัวของ Excel คือชนิดข้อมูลสกุลเงิน (Currencies) ใน Microsoft 365 ซึ่งเป็นอัตราเฉลี่ยล่าสุดที่ไม่สามารถล็อกแหล่งข้อมูลหรือดึงข้อมูลย้อนหลังได้ ส่วนอัตราเฉลี่ยรวมของ Frankfurter สามารถตรวจสอบที่มาได้ และเมื่อจำเป็นต้องอ้างอิงแหล่งข้อมูลที่ชัดเจน คุณก็ล็อกหน่วยงานเดียวได้ เช่น อัตราอ้างอิง ECB สำหรับภาษีมูลค่าเพิ่มในสหภาพยุโรป, NBP ของโปแลนด์ หรือ PTAX ของบราซิล ข้อมูลย้อนหลังของแหล่งข้อมูลที่ล็อกไว้จะคงอยู่ตามที่ประกาศจริง บน Windows และ Mac ใช้ Power Query เป็นหลัก และบน Windows ยังมีสูตรบรรทัดเดียวสำหรับการแปลงค่าเงินแบบรวดเร็วด้วย

Power Query

วิธีหลักสำหรับทั้ง Windows และ Mac ไปที่ ข้อมูล > จากเว็บ (Data > From Web) วาง CSV endpoint แล้วโหลดตาราง date,base,quote,rate สามารถอัปเดตข้อมูลได้ตลอดเวลาด้วย ข้อมูล > รีเฟรชทั้งหมด (Data > Refresh All):

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur

ดึงหลายสกุลเงินปลายทางพร้อมกันโดยคั่นด้วยจุลภาค:

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp,jpy

การแปลงจำนวนเงิน

Power Query จะโหลดเฉพาะอัตราแลกเปลี่ยน ไม่ใช่ยอดเงินที่แปลงแล้ว ให้นำจำนวนเงินไปคูณกับเซลล์อัตราแลกเปลี่ยนที่โหลดมา สำหรับการแปลงครั้งเดียวโดยไม่สร้างคิวรี Microsoft 365 บน Windows สามารถเรียก API ในสูตรได้โดยตรง ให้เพิ่มฟังก์ชันระบุชื่อใน สูตร > ตัวจัดการชื่อ > สร้าง (Formulas > Name Manager > New) ชื่อ FRANKFURTER ด้วยนิยามต่อไปนี้:

=LAMBDA(amount, from, to, [date], amount * NUMBERVALUE(TEXTBEFORE(TEXTAFTER(WEBSERVICE("https://api.frankfurter.dev/v2/rate/" & from & "/" & to & IF(ISOMITTED(date), "", "?date=" & YEAR(date) & "-" & TEXT(MONTH(date), "00") & "-" & TEXT(DAY(date), "00"))), """rate"":"), "}"), "."))

จากนั้นเรียกใช้จากเซลล์ใดก็ได้:

=FRANKFURTER(100, "usd", "eur")

ส่งวันที่เข้าไปเพื่อใช้อัตราแลกเปลี่ยนย้อนหลัง:

=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))

WEBSERVICE ใช้งานได้เฉพาะบน Windows และเนื่องจากสูตรของ Excel ไม่มีตัวแปลง JSON ในตัว ฟังก์ชันนี้จึงอ่านค่าอัตราแลกเปลี่ยนจากข้อความผลลัพธ์โดยตรง ส่วนการระบุจุดทศนิยมใน NUMBERVALUE ช่วยให้สูตรทำงานได้ถูกต้องแม้ในภูมิภาคที่ใช้จุลภาคเป็นตัวคั่นทศนิยม สำหรับบน Mac ให้คูณกับเซลล์อัตราแลกเปลี่ยนจาก Power Query แทน

การล็อกแหล่งข้อมูลทางการ

โดยค่าเริ่มต้นคุณจะได้รับอัตราเฉลี่ยรวมจากทุกแหล่งข้อมูล เพิ่ม providers ใน URL เพื่อล็อกหน่วยงานเดียว ซึ่งสำคัญมากสำหรับงานภาษีและบัญชี เพราะหลายประเทศกำหนดให้ใช้อัตราที่ประกาศโดยธนาคารกลางของประเทศตนเองเมื่อแปลงยอดเงินตราต่างประเทศ

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb
ECB
อัตราอ้างอิงของธนาคารกลางยุโรป มาตรฐานสำหรับภาษีมูลค่าเพิ่มและศุลกากรในสหภาพยุโรป
NBP
ธนาคารแห่งชาติโปแลนด์ (Narodowy Bank Polski) สำหรับการคำนวณภาษีมูลค่าเพิ่มและภาษีเงินได้นิติบุคคลของโปแลนด์
CNB
อัตราประกาศของธนาคารแห่งชาติเช็ก ใช้สำหรับงานบัญชีและภาษีในสาธารณรัฐเช็ก
BCB
อัตรา PTAX ของธนาคารกลางบราซิล (Banco Central do Brasil) มาตรฐานอ้างอิงสำหรับสัญญาและภาษีในบราซิล
BANXICO
อัตรา FIX ของธนาคารกลางเม็กซิโก (Banco de México) สำหรับการชำระภาระผูกพันสกุลดอลลาร์สหรัฐ

ดูแหล่งข้อมูลทั้งหมด แหล่งข้อมูลที่ล็อกไว้จะอัปเดตตามตารางเวลาประกาศของหน่วยงานนั้นเอง อัตราล่าสุดจึงอาจตามหลังอัตราเฉลี่ยรวมอยู่หนึ่งวัน

ข้อมูลอนุกรมเวลาย้อนหลัง

ใช้ from เพื่อกำหนดช่วงวันที่ และใช้ group=month เพื่อยุบรวมเป็นเดือนละหนึ่งแถวพร้อมนำไปสร้างกราฟ โหลดผ่าน Power Query แล้วรีเฟรชได้เหมือนคิวรีทั่วไป ทั้งนี้ ข้อมูลย้อนหลังแบบอัตราเฉลี่ยรวมอาจขยับเล็กน้อยเมื่อมีข้อมูลใหม่เข้ามา ดังนั้นควรล็อกแหล่งข้อมูลเมื่อต้องการให้ตัวเลขคงที่

https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month

คิวรีนี้ดึงข้อมูลดอลลาร์สหรัฐเทียบกับปอนด์สเตอร์ลิงย้อนกลับไปถึงปี 1949 จากคลังข้อมูลของธนาคารกลางเยอรมนี (Deutsche Bundesbank) คุณจะเห็นอัตราผูกค่าเงินที่ $2.80 คงที่ต่อเนื่องหลายปีก่อนจะยุติลงในปี 1967 ข้อมูลย้อนหลังลึกๆ มาจากอัตราประกาศที่แฟรงก์เฟิร์ตของ Bundesbank ทั้งดอลลาร์เทียบกับมาร์กเยอรมันตั้งแต่ปี 1948 และคู่เงินดอลลาร์อื่นๆ ส่วนใหญ่ในช่วงปี 1949 ถึง 1970 จากนั้นธนาคารกลางยุโรปจึงรับช่วงต่อตั้งแต่ปี 1999 ดังนั้นหากต้องการอนุกรมเวลายุคปัจจุบันแบบต่อเนื่อง ให้ใช้อัตราเฉลี่ยรวมเริ่มต้นหรือระบุ providers=ecb