【问题标题】:Split text into different columns from the right从右侧将文本拆分为不同的列
【发布时间】:2017-04-11 14:53:04
【问题描述】:

我在 Excel 的一个单元格中使用 v2016 有一串字母数字文本。文字类似于:

ECN 6120 012 MMR 12195 201481

我使用了“搜索”、“查找”和“修剪”的变体来将第一组、第二组、第三组和最后一组文本放入单个单元格中。

我需要获取倒数第二组数字,但需要从右侧抓取它,因为“MMR”有时不存在。 有什么想法吗?

【问题讨论】:

  • 如果数据是固定长度的,可以使用正确的函数。否则,如果数据由空格分隔,您可以使用 instr 和 right 来获取它们
  • 这正是问题所在,我要拔出的位之前的字符串,12195不固定,有时有MMR或类似的,有时没有,所以我试图从右边抓取它,但不知道如何将它嵌套在右边的第一个和第二个空间之间。
  • 是否总是有 5 个或 6 个字段的格式完全一样,用一个空格分隔它们?
  • 到目前为止,是的,有 5 或 6 个字段,每个字段之间有一个空格,如果总共有 6 个字段,那么我可以忽略第四个字段。也许我只需要添加另一列并删除额外的字段(如果存在)?

标签: excel excel-formula excel-2016


【解决方案1】:

A1 中有数据,在 B1 中输入:

=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

并复制:

【讨论】:

  • 如果 E 列中的文本有时不包含在文本字符串单元格 A1 中,我如何获取 F 列中的文本?
【解决方案2】:

您可以使用 UDF 来执行此操作。

在 VBE 中,创建一个新模块并将此代码放入:

Function strtok(strIn As String, strDelim As String, intToken As Integer) As String
   strtok = Split(strIn, strDelim)(intToken - 1)
End Function

您可以在工作表上使用它,然后使用公式:

=strtok(A1, " ", 4) 

获取该单元格中的第 4 个单词。

【讨论】:

  • 谢谢,但尽量不要使用 VB,因为我对它一无所知,现在没有时间学习
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多