1

这是一个excel问题。我需要将字符串中的文本和数字分开。字符串可以以数字开头,也可以以字符开头。文本或数字之间可能有空格。因此,该公式需要足够通用,以将其分成 2 列,其中一列仅包含文本,另一列仅包含数字。请帮忙。

非常感谢

文本字符串示例

  • 07 7878 8788 ABC JKSDKJK
  • ABCVG HDH 656688
  • AGSGD89789798798
  • 798 99AJSUDFK
4

2 回答 2

1

只有文字

函数 Alphas(ByVal strInString As String) As String Dim lngLen As Long, strOut As String Dim i As Long, strTmp As String

lngLen = Len(strInString)
strOut = ""
For i = 1 To lngLen
    strTmp = Left$(strInString, 1)
    strInString = Right$(strInString, lngLen - i)
    'The next statement will extract BOTH Lower and Upper case chars
    If (Asc(strTmp) >= 65 And Asc(strTmp) <= 90 Or Asc(strTmp) >= 97 And Asc(strTmp) <= 122) Then
        'to extract just lower case, use the limit 97 - 122
        'to extract just upper case, use the limit 65 - 90
        strOut = strOut & strTmp
    End If
Next i
Alphas = strOut

结束功能

只有数字

函数 Numerics(ByVal strInString As String) As String Dim lngLen As Long, strOut As String Dim i As Long, strTmp As String

lngLen = Len(strInString)
strOut = ""
For i = 1 To lngLen
    strTmp = Left$(strInString, 1)
    strInString = Right$(strInString, lngLen - i)
    If (Asc(strTmp) >= 48 And Asc(strTmp) <= 57) Then
        strOut = strOut & strTmp
    End If
Next i
Numerics = strOut

结束功能

只有数字和文字

Function Alphanumerics(ByVal strInString As String) As String Dim lngLen As Long, strOut As String Dim i As Long, strTmp As String

lngLen = Len(strInString)
strOut = ""
For i = 1 To lngLen
    strTmp = Left$(strInString, 1)
    strInString = Right$(strInString, lngLen - i)
    'The next statement will extract BOTH Lower and Upper case chars
    If (Asc(strTmp) >= 65 And Asc(strTmp) <= 90 Or Asc(strTmp) >= 97 And Asc(strTmp) <= 122 or Asc(strTmp) >= 48 And Asc(strTmp) <= 57) Then
        'to extract just lower case, use the limit 97 - 122
        'to extract just upper case, use the limit 65 - 90
        strOut = strOut & strTmp
    End If
Next i
Alphanumerics = strOut

结束功能

这也可以在 excel 中使用,但这由我修改以供 Access 使用

于 2015-01-31T09:42:16.367 回答
0

只要 A 列中的所有单元格的格式为 {numbers + spaces}{non-numeric text} 或相反,您就可以从查找第一个数字字符和第一个非数字非空格的位置开始每个单元格中的字符。然后,您可以使用这些加上一些额外的逻辑来使用MID.

我在这里发布了数组公式来执行此操作: Excel 公式来查找单元格中的第一个非字母字符?

您需要对第二个公式稍作修改,因此它返回不是数字或空格的第一个字符的位置:

=MIN(
        IF(
                  1*ISNUMBER(
                  1*MID(
                      A1,
                      ROW(INDIRECT("A1:A"&LEN(A1))),
                      1
                  )
                ) +
                1*(MID(
                      A1,
                      ROW(INDIRECT("A1:A"&LEN(A1))),
                      1
                  )=" "),
            LEN(A1)+1,
            ROW(INDIRECT("A1:A"&LEN(A1)))

        )
    )
于 2013-03-26T16:08:26.167 回答