首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否使用Excel公式查找单元格中的第一个非字母字符?

是否使用Excel公式查找单元格中的第一个非字母字符?
EN

Stack Overflow用户
提问于 2009-10-01 21:00:38
回答 2查看 12.2K关注 0票数 1

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

我已经将数据导入到Excel中,其中有一个列,如下所示:

<some text I don't want in the derived cell><some text that prepends the text I want and is always constant>TheTextIWant<Some non-alpha character><some other characters that may be alpha or not>

我正在尝试创建一个到目前为止看起来像这样的公式:

=MID(<cell reference>, SEARCH("<prepended text>, <cell reference>) + <length of prepended text>, ??)

在哪里??是查找"TheTextIWant“之后的第一个非字母字符的某个子公式

这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2012-03-05 06:48:51

为了更详细地了解数组公式是如何工作的(@雅各布的公式在几种情况下似乎略有错误,例如0代表"A1A"),所以我认为这是一个工作版本,为便于阅读而进行了扩展。请让我知道它不起作用的任何例子。

代码语言:javascript
运行
复制
=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
        )
    )
)

  • 的核心是()函数,该函数在数组模式下为范围a1:a*n*中的每个单元格计算一次,其中n是单元格A1中字符串的长度,从而创建一个数组{1,2,...,n}。
  1. 将该数组传递给MID函数,该函数将生成一个数组{*char_1*,*char_2*,...,*char_n*}。
  2. 将数组乘以1,以防止在后续步骤中将数字字符解析为文本。这也可以使用VALUE()完成。
  3. 然后将其传递给ISNUMBER()函数,该函数输出逻辑值的数组。

这是传递给IF的条件数组。然后,通过重复步骤1构造第二个数组,其中包含每个字符的位置。在数组模式下,IF函数生成一个输出数组。条件为TRUE的情况被设置为字符位置数组中的相应值,其余的都设置为LEN(A1)+1,因此它们大于任何数字字符的任何可能的位置值。

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

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

代码语言:javascript
运行
复制
=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)))

        )
    )
)
票数 1
EN

Stack Overflow用户

发布于 2009-10-01 21:29:26

On this page有一个数组公式用于查找“字符串中第一个数字的位置”。你应该能够修改它来使用'T‘函数(来判断一个字符是否是文本),结合一些减法,然后得到你想要的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1506467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档