在 Excel 中提取单元格内的字符串中的数字,你可以使用以下公式来实现:
假设要提取的字符串位于单元格 A1 中,你可以使用以下公式来提取其中的数字:
=SUMPRODUCT(MID(0&A1, LARGE(INDEX(ISNUMBER(--MID(A1, ROW(INDIRECT("1:"&LEN(A1))), 1)) * ROW(INDIRECT("1:"&LEN(A1))), 0), ROW(INDIRECT("1:"&LEN(A1))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A1)))/10)
这个公式的作用是从单元格 A1 中提取数字。请将它放在另一个单元格中,然后将 A1 替换为你要提取数字的单元格引用。
以下是这个公式的解释:
MID(A1, ROW(INDIRECT("1:"&LEN(A1))), 1):这部分会遍历单元格 A1 中的每个字符并返回字符。LEN(A1) 返回字符串的长度,ROW(INDIRECT("1:"&LEN(A1))) 用于生成数字序列,逐个遍历字符串中的字符。
ISNUMBER(--MID(A1, ...)):检查每个字符是否是数字。如果字符是数字,返回 TRUE;如果不是,返回 FALSE。
INDEX(ISNUMBER(--MID(A1, ...)) * ROW(INDIRECT("1:"&LEN(A1))), 0):将 TRUE 和 FALSE 的数组与数字序列相乘,得到一个数组,其中包含数字字符的位置。
LARGE(..., ROW(INDIRECT("1:"&LEN(A1)))+1):从上一步得到的数组中提取第 n 大的 TRUE 的位置,其中 n 从 1 到字符串长度。
10^ROW(INDIRECT("1:"&LEN(A1)))/10:创建一个数组,其中包含 10 的幂次方,用于将每个数字字符恢复到其原始值。
SUMPRODUCT(...):将上述计算的结果相乘并求和,最终得到提取的数字。
这个公式非常灵活,可以提取包含在字符串中的多个数字,并根据它们的位置提取。请注意,如果字符串中包含非数字字符,这个公式也会提取出来并进行相应的运算。