使用 FILTER.XML 函數分割粘性文本

內容

最近,我們討論了使用 FILTER.XML 函數從 Internet 導入 XML 數據——事實上,該函數的主要任務是。 然而,在此過程中,這個功能的另一個意想不到的美妙用途已經浮出水面——用於將粘性文本快速劃分為單元格。

假設我們有一個這樣的數據列:

使用 FILTER.XML 函數分割粘性文本

當然,為了方便,我想把它分成不同的列:公司名稱、城市、街道、房子。 您可以通過多種不同的方式執行此操作:

  • 使用 按列顯示文本 從標籤 數據 (數據 - 文本到列) 然後走三步 文本解析器. 但是如果明天數據發生變化,您將不得不再次重複整個過程。
  • 將此數據加載到 Power Query 中並在那裡劃分,然後將其上傳回工作表,然後在數據更改時更新查詢(這已經很容易了)。
  • 如果您需要即時更新,那麼您可以編寫一些非常複雜的公式來查找逗號並提取它們之間的文本。

而且您可以更優雅地使用 FILTER.XML 函數,但它與它有什麼關係呢?

FILTER.XML 函數接收一個 XML 代碼作為其初始參數——用特殊標籤和屬性標記的文本,然後將其解析為它的組件,提取我們需要的數據片段。 XML 代碼通常如下所示:

使用 FILTER.XML 函數分割粘性文本

在 XML 中,每個數據元素都必須包含在標籤中。 標籤是一些用尖括號括起來的文本(在上面的示例中是經理、姓名、利潤)。 標籤總是成對出現——打開和關閉(在開頭添加一個斜線)。

FILTER.XML 函數可以輕鬆提取我們需要的所有標籤的內容,例如,所有經理的姓名,並且(最重要的是)一次將它們全部顯示在一個列表中。 所以我們的任務是給源文本添加標籤,把它變成適合FILTER.XML函數後續分析的XML代碼。

如果我們以列表中的第一個地址為例,那麼我們需要把它變成這個結構:

使用 FILTER.XML 函數分割粘性文本

我調用了全局打開和關閉所有文本標籤 t,並且構成每個元素的標籤是 s.,但您可以使用任何其他名稱——沒關係。

如果我們從這段代碼中刪除縮進和換行符——順便說一句,完全是可選的並且只是為了清楚起見而添加,那麼所有這些都將變成一行:

使用 FILTER.XML 函數分割粘性文本

並且通過用幾個標籤替換源地址中的逗號已經可以相對容易地從源地址中獲得它 使用函數 替代 (代替) 並與符號粘合 & 在開始和結束標籤的開頭和結尾:

使用 FILTER.XML 函數分割粘性文本

為了水平擴展結果範圍,我們使用標準函數 交通運輸部 (移調),將我們的公式包裝在其中:

使用 FILTER.XML 函數分割粘性文本

整個設計的一個重要特點是,在支持動態數組的新版 Office 2021 和 Office 365 中,輸入不需要特殊的手勢——只需輸入並點擊 Enter – 公式本身佔據了它需要的單元格數量,並且一切正常。 在以前的版本中,還沒有動態數組,在輸入公式之前需要先選擇足夠數量的空單元格(可以有邊距),創建公式後,按鍵盤快捷鍵 按Ctrl+轉移+Enter將其作為數組公式輸入。

當通過換行符將粘在一起的文本分隔到一個單元格時,可以使用類似的技巧:

使用 FILTER.XML 函數分割粘性文本

與前面的例子唯一不同的是,這裡我們替換了不可見的 Alt + Enter 換行符,而不是逗號,可以使用代碼 10 的 CHAR 函數在公式中指定。

  • 在 Excel 中使用換行符 (Alt + Enter) 的微妙之處
  • 在 Excel 中按列除文本
  • 用 SUBSTITUTE 替換文本

發表評論