我遇到了MID()返回期望值的情况,但这似乎是错误的“类型”。例如,假设您有一个简单的字符表,其宽度以英寸为单位...
Char | Width
A | 0.3465
B | 0.3144
C | 0.3478
...
在A1单元格中,有短语F1-40
(我想要的序列号)。
在单元格C2中,我有公式=INDEX(Widths,MATCH(C1,Chars,0))
。
当我手动在C1中键入1
时,C2中的公式将按预期显示该字符的宽度。
当我使用公式查找字符... =MID(A1,2,1)
... C1 显示正确的字符(仍为1
),但是:
如果字符是字母,则INDEX / MATCH可以正常工作。
如果字符是数字,则INDEX / MATCH 失败(???)。
如果字符是数字 ,我将MID()像这样包装:VALUE(MID())
,则INDEX / MATCH可以正常工作。
如果字符是字母 ,并且我用VALUE(MID())
包裹了MID(),则INDEX / MATCH 失败。
肯定有一种方法可以在不事先知道MID()是否返回数字或字母的情况下完成此操作吗?
谢谢
-B
答案 0 :(得分:2)
MID返回文本。如果它看起来像一个数字,则是看起来像一个数字的文本,而不是实数。您不能使用看起来像数字的文本在实数列中查找匹配项。值得庆幸的是,有一个double unary或双减号可以将看起来像一个数字的文本隐藏为一个真实数字。
=--MID(A1,2,1)
但是,如果您尝试将真实文本(例如 abc )转换为数字,则会引发错误,因此必须应用IFERROR包装器以返回真实数字(如果可能)或文本
=iferror(--MID(A1,2,1), MID(A1,2,1))