Excel公式查找单元格中的第一个非字母字符?

Excel公式查找单元格中的第一个非字母字符?,excel,excel-formula,Excel,Excel Formula,有没有办法在Excel中使用单元格公式来查找引用单元格中第一个非字母字符的索引 我已将数据导入Excel,Excel中的列如下所示: 有一个用于查找“字符串中第一个数字的位置”的数组公式。您应该能够修改该公式,以使用“T”函数(确定字符是否为文本),加入一点减法,然后找到您要查找的内容。有一个用于查找字符串的数组公式“字符串中第一个数字的位置。”您应该能够修改它以使用“T”函数(确定字符是否为文本),加入一点减法,然后找到您要查找的内容。更详细地了解数组公式的工作原理(@Jacob的公式在一些情

有没有办法在Excel中使用单元格公式来查找引用单元格中第一个非字母字符的索引

我已将数据导入Excel,Excel中的列如下所示:


有一个用于查找“字符串中第一个数字的位置”的数组公式。您应该能够修改该公式,以使用“T”函数(确定字符是否为文本),加入一点减法,然后找到您要查找的内容。

有一个用于查找字符串的数组公式“字符串中第一个数字的位置。”您应该能够修改它以使用“T”函数(确定字符是否为文本),加入一点减法,然后找到您要查找的内容。

更详细地了解数组公式的工作原理(@Jacob的公式在一些情况下似乎有点错误,例如0代表“A1A”),因此我认为这是一个有效的版本,为便于阅读而扩展。请告诉我任何不起作用的示例

=IF(
    LEN(A1)=0
    ,0
    ,MIN(
        IF(
            ISNUMBER(
                1*MID(
                    A1,
                    ROW(INDIRECT("A1:A"&LEN(A1))),
                    1
                )
            ),
            ROW(INDIRECT("A1:A"&LEN(A1))),
            LEN(A1)+1
        )
    )
)
  • 它的核心是row()函数,在数组模式下,对a1:a*n*范围内的每个单元格计算一次,其中n是单元格a1中字符串的长度,创建一个数组{1,2,…,n}
  • 数组被传递给MID函数,MID函数依次生成数组{*char_1*,*char_2*,…,*char_n*}
  • 数组乘以1,以防止在后续步骤中将数字字符解析为文本。这也可以使用VALUE()完成
  • 然后将其传递给ISNUMBER()函数,该函数输出一个逻辑值数组
  • 这是传递给IF的条件数组。然后通过重复步骤1构造第二个数组,其中包含每个字符的位置。在数组模式下,IF函数生成一个输出数组。条件为TRUE的案例将设置为字符位置数组中的相应值,其余的都设置为LEN(A1)+1,因此它们大于任何数字字符的任何可能位置值

    然后,MIN函数通过IF对数组输出求值,返回最小值,即单元格A1中字符串中第一个数字字符的位置。如果单元格中没有文本,则最外层的IF函数强制公式返回0,而不是1;否则,在搜索单元格A0时,间接返回#REF!错误,即向上传播,IF返回FALSE条件,返回0+1=1

    要搜索第一个非数字字符的位置,只需将第二个2个参数的顺序颠倒为:

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

    为了更详细地了解数组公式是如何工作的(@Jacob的公式在一些情况下似乎有点错误,例如,“A1A”的值为0),我认为这是一个工作版本,为了便于阅读而扩展。请告诉我任何不工作的示例

    =IF(
        LEN(A1)=0
        ,0
        ,MIN(
            IF(
                ISNUMBER(
                    1*MID(
                        A1,
                        ROW(INDIRECT("A1:A"&LEN(A1))),
                        1
                    )
                ),
                ROW(INDIRECT("A1:A"&LEN(A1))),
                LEN(A1)+1
            )
        )
    )
    
  • 它的核心是row()函数,在数组模式下,对a1:a*n*范围内的每个单元格计算一次,其中n是单元格a1中字符串的长度,创建一个数组{1,2,…,n}
  • 数组被传递给MID函数,MID函数依次生成数组{*char_1*,*char_2*,…,*char_n*}
  • 数组乘以1,以防止在后续步骤中将数字字符解析为文本。这也可以使用VALUE()完成
  • 然后将其传递给ISNUMBER()函数,该函数输出一个逻辑值数组
  • 这是传递给IF的条件数组。然后通过重复步骤1构造第二个数组,其中包含每个字符的位置。在数组模式下,IF函数生成一个输出数组。条件为TRUE的案例将设置为字符位置数组中的相应值,其余的都设置为LEN(A1)+1,因此它们大于任何数字字符的任何可能位置值

    然后,MIN函数通过IF对数组输出求值,返回最小值,即单元格A1中字符串中第一个数字字符的位置。如果单元格中没有文本,则最外层的IF函数强制公式返回0,而不是1;否则,在搜索单元格A0时,间接返回#REF!错误,即向上传播,IF返回FALSE条件,返回0+1=1

    要搜索第一个非数字字符的位置,只需将第二个2个参数的顺序颠倒为:

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

    谢谢,本周末我将试着看一看。-rpI很难理解文章中描述的数组公式。需要更多的研究…不仅仅是你-公式有效,但是当一步一步评估时,它会崩溃!谢谢,本周末我将试着看一看。-rpI很难理解我的头脑围绕着文章中描述的数组公式。需要更多的研究…不仅仅是你-公式有效,但当一步一步评估它崩溃excel!