Excel如何在遇到字符串中的第一个Alpha后停止LEFT公式

标签 excel excel-formula

所以我试图为 vlookup 提取文本字符串的特定部分(部分编号),

我有一个公式,可以在大多数情况下为我提供所需的零件编号,该公式在到达文本字符串中的最后一个数字后停止 LEFT 公式。一些部件号在文本字符串中还有更多数字。

我需要公式返回文本字符串直到最后一个数字,但一旦再次变回 Alpha 就停止。 我希望这是有道理的,我已附上屏幕截图来示例问题和我的代码。如果你在 R 列中看到 FR70YERXX/3,它应该停在 Y 之前,但我就是无法理解这个。 Excel Find formula issue

=LEFT(J2,MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},J2,ROW(INDIRECT("1:"&LEN(J2)))),0)))

最佳答案

将以下代码放入 Excel 的模块中

Function LeftCode(s As String) As String
i = 1
While Not ((Mid(s, i, 1) >= "0") And (Mid(s, i, 1) <= "9")) And (i <= Len(s))
    i = i + 1
Wend
If i > Len(s) Then
    LeftCode = s
Else
    While Not ((Mid(s, i, 1) < "0") Or (Mid(s, i, 1) > "9")) And (i <= Len(s))
        i = i + 1
    Wend
    If i > Len(s) Then
        LeftCode = s
    Else
        LeftCode = Left(s, i - 1)
    End If
End If
End Function

然后在 R 列中输入:

=LeftCode(J2)

并将其复制下来

Results

说明

创建一个函数来获取字符串并返回字符串

Function LeftCode(s As String) As String

从第一个字符开始,一次循环遍历字符串一个字符,直到找到数字 (0-9)

i = 1
While Not ((Mid(s, i, 1) >= "0") And (Mid(s, i, 1) <= "9")) And (i <= Len(s))
    i = i + 1
Wend

如果我们已经到达末尾,没有数字,则全部返回

If i > Len(s) Then
    LeftCode = s

否则继续循环每个字符,直到找到非数字

Else
    While Not ((Mid(s, i, 1) < "0") Or (Mid(s, i, 1) > "9")) And (i <= Len(s))
        i = i + 1
    Wend

如果我们到达终点,那么我们就想要整个事情

    If i > Len(s) Then
        LeftCode = s
    Else

否则我们只需要最后一个字符

        LeftCode = Left(s, i - 1)
    End If
End If
End Function

关于Excel如何在遇到字符串中的第一个Alpha后停止LEFT公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45859290/

相关文章:

excel - 粘贴非空白行时保持行完整性

vba - Excel VBA中复制时如何判断是否有隐藏列

vba - Excel VBA 范围计算

regex - Excel中的反向字符串搜索

excel - 如何在 excel 2007 中执行两个二进制数的 XOR 计算

excel vlookup 有多个结果

excel - 有人使用 Redshift 获取 Excel 数据透视表吗?

c# - 从 C# 启动 Excel 进入后台

excel - 在 =TEXT() 之前插入括号

excel - 在Excel中生成真值表