我正在尝试弄清楚 Excel 使用这两个函数到底做什么。
我在一列中有多行字符串。我想提取这些字符串中的第一个数字。第一个数字可以是 0、1、2、3...、9,字符串的总长度各不相同。我想找到第一个数字并返回它以及它之后的所有内容。我在谷歌上搜索如何找到字符串中的第一个数字时找到了以下代码,但我不明白它是如何工作的。我所做的唯一更改是在 IF 语句中添加了一个失败操作。
=MIN(IF(ISNUMBER(FIND({1,2,3,4,5,6,7,8,9,0},A1))=TRUE,FIND({1,2,3,4,5,6,7,8,9,0},A1),"N/A"))
当我读到它时,它说的是:在{1,2,3,4,5,6,7,8,9,0}
我的字符串中找到数组中的任何数字吗?如果有,ISNUMBER() = TRUE
则将通过,代码将执行第二个FIND()
函数。然后它将第二个函数的结果FIND()
(即字符串中所有数字的位置)传递给MIN()
取最小值(即第一个位置)的函数。
这做可以正常工作,但我不明白的是,如果我不使用 IF 语句,它会出错#VALUE
。换句话说,如果我这样做
=MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1))
我进入了#VALUE
输出单元格。为什么?我只是把我能看到的 IF 语句去掉了。
有人能解释一下我这里遗漏了什么吗?这是 Excel 从函数传递信息的方式吗IF()
?
答案1
Min
为您提供字符串中的最小数字A1
,因此如果A1
包含字母和数字(例如123text0
)Find
而不包含If
和,isnumeric()
将#value
代替字符,并用数字代替数字。
MIN(IF(ISNUMBER(FIND({1,2,3,4,5,6,7,8,9,0},A1))=TRUE,FIND({1,2,3,4,5,6,7,8,9,0},A1),"N/A"))
正在N/A
代替#value
并且Min
将忽略文本N/A
但不能忽略错误#value
。
If()
正在测试Find()
是否是数字,所以如果isnumeric
是,true
它会写入数字,如果不是,它会写入N/A Min(1,2,3,"N/A","N/A"..)=1
,但是当你删除If
时Min(1,2,3,#value,#value..)=#value
。