FILTERXML 函數

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 Beginners
  • Advanced 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.99
  • 29.99

這個查詢使用 @price 來選擇每本書的 price 屬性。


進階應用

  1. 提取多個元素 如果您的 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>
    

    使用以下公式來提取所有 titleauthor

    =FILTERXML(A1, "//book/title")
    

    這會返回:

    • Excel for Beginners
    • Advanced Excel

    如果您還需要提取作者,可以再使用一次 FILTERXML 函數:

    =FILTERXML(A1, "//book/author")
    

    這會返回:

    • John Doe
    • Jane Smith
  2. 處理更複雜的 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 中的元素,並且可以非常高效地處理復雜的資料提取任務。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *