Excel FILTERXML 函數教學 ?
FILTERXML 函數用來從 XML 資料中提取資料。這個函數非常適合處理包含 XML 格式的資料,並且能夠根據 XPath 查詢語法提取您需要的部分數據。
語法
FILTERXML(內容, 查詢)
- 內容(必填):一個包含 XML 資料的字符串(通常是來自其他單元格的 XML 資料或一個直接提供的 XML 字符串)。
- 查詢(必填):XPath 查詢字符串,用來選擇您想從 XML 中提取的元素。
返回值
- 返回與 XPath 查詢相匹配的 XML 資料。
- 如果找不到匹配的結果,則返回錯誤值
#VALUE!。
XPath 查詢
XPath 是用來定位 XML 文件中的元素或數據的一種查詢語言。它類似於一種 “路徑” 語法,可以選擇 XML 標籤或屬性中的內容。
範例
假設您有一個包含 XML 資料的字符串,並希望從中提取特定的信息。
範例 1:簡單的 XML 資料
假設單元格 A1 中包含以下 XML 資料:
<bookstore>
<book>
<title>Excel for Beginners</title>
<author>John Doe</author>
</book>
<book>
<title>Advanced Excel</title>
<author>Jane Smith</author>
</book>
</bookstore>
要提取 title 元素中的所有書名,您可以使用 FILTERXML 函數與 XPath 查詢。
在 B1 中使用以下公式:
=FILTERXML(A1, "//title")
這會返回:
Excel for BeginnersAdvanced Excel
該查詢選擇了所有 <title> 標籤的內容。
範例 2:提取特定的屬性
假設您的 XML 資料包含屬性(例如價格),如下所示:
<books>
<book price="19.99">
<title>Excel for Beginners</title>
<author>John Doe</author>
</book>
<book price="29.99">
<title>Advanced Excel</title>
<author>Jane Smith</author>
</book>
</books>
您可以使用 XPath 查詢來提取書籍的價格。假設這些 XML 資料在 A1 中,請在 B1 中使用以下公式來提取價格:
=FILTERXML(A1, "//book/@price")
這會返回:
19.9929.99
這個查詢使用 @price 來選擇每本書的 price 屬性。
進階應用
- 提取多個元素 如果您的 XML 資料包含多個層級或重複的元素,您可以使用更複雜的 XPath 查詢來提取資料。例如,假設您有以下資料:
<library> <book> <title>Excel for Beginners</title> <author>John Doe</author> </book> <book> <title>Advanced Excel</title> <author>Jane Smith</author> </book> </library>使用以下公式來提取所有
title和author:=FILTERXML(A1, "//book/title")這會返回:
Excel for BeginnersAdvanced Excel
如果您還需要提取作者,可以再使用一次
FILTERXML函數:=FILTERXML(A1, "//book/author")這會返回:
John DoeJane Smith
- 處理更複雜的 XML 資料 當 XML 資料結構更複雜時,您可以使用多層次的 XPath 查詢來選擇您需要的元素。例如,提取複雜層次結構中的某些元素。
錯誤處理
如果 XPath 查詢找不到匹配的元素,FILTERXML 會返回錯誤值 #VALUE!。例如,如果您的 XML 資料中沒有 <price> 元素,使用 FILTERXML 查詢該元素將會返回錯誤。
要避免這種情況,您可以使用 IFERROR 函數來捕捉錯誤並提供一個默認值:
=IFERROR(FILTERXML(A1, "//price"), "No price available")
這樣,當找不到 price 元素時,將顯示 No price available。
結論
FILTERXML函數 是一個非常有用的工具,尤其在處理包含 XML 格式數據的情況下。- 它允許您使用 XPath 查詢語法提取 XML 中的元素,並且可以非常高效地處理復雜的資料提取任務。