使用 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 中,输入不需要特殊的手势——只需输入并点击 输入 – 公式本身占据了它需要的单元格数量,并且一切正常。 在以前的版本中,还没有动态数组,在输入公式之前需要先选择足够数量的空单元格(可以有边距),创建公式后,按键盘快捷键 按Ctrl+转移+输入将其作为数组公式输入。

当通过换行符将粘在一起的文本分隔到一个单元格时,可以使用类似的技巧:

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

与上一个示例的唯一区别是,这里我们替换了不可见的 Alt + Enter 换行符,而不是逗号,该换行符可以使用代码 10 的 CHAR 函数在公式中指定。

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

发表评论