【问题标题】:How to extract the six digit number in a cell string?如何提取单元格字符串中的六位数字?
【发布时间】:2018-06-04 18:08:28
【问题描述】:

我有一列包含数据:

纽约真的很好,456983 美食
北京真棒678932,好文化。
...等等

我想提取六位数字并将其放在原始列旁边的列中。

有 n 行。

没有VBA,有没有办法用公式做到这一点?

【问题讨论】:

  • @Carol 我已经做到了,但我没有得到任何帮助......即使是之前提出的堆栈交换问题

标签: excel excel-formula excel-2007 vba


【解决方案1】:

如果没有 VBA,您可以使用以下 Excel 公式,假设 A1 是包含文本的单元格。

=MID(A1,FIND("------",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"0","-"),"1","-"),"2","-"),"3","-"),"4","-"),"5","-"),"6","-"),"7","-"),"8","-"),"9","-")),6)

【讨论】:

  • 这适用于单元格中的任何文本和 6 位数字吗?
  • @pandong 是的,除非您的文本包含 ------(6 个破折号),例如 ------ 非常好,456983 美食
  • 非常感谢,我实施并检查后会通知您并接受您的答复
【解决方案2】:

此公式适用于您的两个示例:

=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&1234567890)),6)

【讨论】:

  • @barry houdini 谢谢
  • 这几乎可以工作,但在“New York 64 is really nice, 456983 Good food”之类的字符串上失败(它找到“64 rea”,而不是 6 位整数)。 OP 要求在字符串中查找“仅 6 位整数”,但未指定它必须是字符串中的第一个/唯一整数,只是字符串只能包含一个 6 维整数。如果您知道字符串仅包含一个整数(并且该整数是 6-d),或者 6-d 整数将始终是字符串中的第一个整数,那么这很有效,因为它只是查找前沿。在我的用例中,这是可以接受的,所以仍然很有帮助。
  • 我需要从完整的笔记中提取 5 位数的工作编号,类似于邮政编码“30005”......工作完美,比许多帖子小得多的解决方案......谢谢
【解决方案3】:

你可以用这个,作为数组公式输入:

=MID(A2,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A2),"")),SUMPRODUCT(--ISNUMBER(MID(A2,ROW($A$1:$A$200),1)+0)))

【讨论】:

  • 谢谢,但我要先接受我收到的答复
【解决方案4】:

这对我有用。这将查找字符串中的所有数字。 - 你当然可以添加限制。

Sub numberExtract()
    x = ActiveCell
    Dim valIs As String
    Dim a As String
    For i = 1 To Len(x)
        a = Mid(x, i, 1)
        If IsNumeric(a) Then
            valIs = valIs & a
        End If
    
    Next i
    MsgBox valIs
End Sub

【讨论】:

  • 请确保所有代码都在框中。在文本结尾和代码开头之间留一个空格。
  • 令人讨厌的是,它不会按要求格式化代码。
猜你喜欢
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多