最后一个字

乍一看,一个简单的问题,一个不明显的解决方案: 从一行文本中提取最后一个单词. 好吧,或者,在一般情况下,最后一个片段,由给定的分隔符(空格、逗号等)分隔。换句话说,有必要在 a 的字符串中实现反向搜索(从头到尾)给定字符,然后提取它右侧的所有字符。

让我们看一下传统的几种选择方式:公式、宏和通过 Power Query。

方法 1. 公式

为了更容易理解公式的本质和机制,让我们从远处开始。 首先,让我们将源文本中单词之间的空格数增加到例如 20 个。 您可以使用替换功能来做到这一点。 替代 (代替) 以及重复给定字符 N 次的功能—— REPEAT (重复):

最后一个字

现在我们使用函数从结果文本的末尾截掉 20 个字符 (对):

最后一个字

天气越来越热了,对吧? 仍然使用该功能删除多余的空格 TRIM (修剪) 问题将得到解决:

最后一个字

在英文版中,我们的公式将如下所示:

=TRIM(RIGHT(替代(A1;» «;REPT(» «;20));20))

我希望很清楚,原则上不需要恰好插入 20 个空格——任何数字都可以,只要它超过源文本中最长单词的长度即可。

如果源文本不需要用空格分隔,而是用另一个分隔符(例如,用逗号),那么我们的公式需要稍微修正一下:

最后一个字

方法二、宏功能

从文本中提取最后一个单词或片段的任务也可以使用宏来解决,即在 Visual Basic 中编写一个反向搜索函数,它会做我们需要的——在相反方向搜索字符串中的给定子字符串——从结束到开始。

按键盘快捷键 其他+F11 或按钮 Visual Basic中 标签 开发人员 (开发商)打开宏编辑器。 然后通过菜单添加一个新模块 插入 - 模块 并在那里复制以下代码:

 Function LastWord(txt As String, Optional delim As String = " ", Optional n As Integer = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) End Function  

现在您可以保存工作簿(以启用宏的格式!)并按以下语法使用创建的函数:

=LastWord(txt ; delim ; n)

哪里

  • TXT - 带有源文本的单元格
  • DELIM — 分隔符(默认 — 空格)
  • n - 应该从末尾提取什么单词(默认情况下 - 从末尾开始)

最后一个字

随着未来源文本的任何更改,我们的宏函数将像任何标准 Excel 工作表函数一样即时重新计算。

方法 3. 电源查询

电源查询 是 Microsoft 的一个免费插件,用于从几乎任何来源将数据导入 Excel,然后将下载的数据转换为任何形式。 这个加载项的强大功能和酷炫功能非常强大,以至于微软默认将其所有功能都内置到 Excel 2016 中。 Excel 2010-2013 Power Query 可以从这里免费下载。

我们使用 Power Query 通过给定分隔符分隔最后一个单词或片段的任务很容易解决。

首先,让我们使用键盘快捷键将我们的数据表变成智能表。 按Ctrl+T 或命令 主页 – 格式为表格 (首页——表格格式):

最后一个字

然后我们使用命令将创建的“智能表”加载到 Power Query 中 从表/范围 (来自表格/范围) 标签 时间 (如果您有 Excel 2016)或在选项卡上 电源查询 (如果您有 Excel 2010-2013):

最后一个字

在打开的查询编辑器窗口中的选项卡上 转型 (转换) 选择一个团队 拆分列 - 按分隔符 (拆分列 - 按分隔符) 然后它仍然设置分隔符并选择选项 最右边的分隔符不删减所有单词,只删最后一个:

最后一个字

点击后 OK 最后一个单词将被分隔到一个新列中。 可以通过右键单击其标题并选择来删除不必要的第一列 删除 (删除). 您还可以重命名表标题中的剩余列。

可以使用命令将结果上传回工作表 主页 — 关闭并加载 — 关闭并加载到… (首页 - 关闭并加载 - 关闭并加载到...):

最后一个字

结果我们得到:

最后一个字

像这样——便宜又开朗,没有公式和宏,几乎不用触摸键盘🙂

如果将来原始列表发生变化,右键单击或使用键盘快捷键就足够了 按Ctrl+其他+F5 更新我们的请求。


  • 将粘性文本拆分为列
  • 使用正则表达式解析和解析文本
  • 使用 SUBSTITUTE 函数从文本中提取第一个单词

发表评论