表格,选择A1——E1里数值,A1——E1单元格里有数字和文字,如何把里面的...
发布网友
发布时间:2024-10-21 21:04
我来回答
共1个回答
热心网友
时间:2024-11-15 12:52
在Excel中,如果你想从A1到E1的单元格中提取所有非数字的文字信息并汇总到G1单元格,你可以使用一个组合公式来实现这个功能。这里的关键是使用`TEXTJOIN`函数结合`ISNUMBER`和`SUBSTITUTE`函数。
以下是一个可能的公式,假设你想要提取的是非数字的字符:
```excel
=G1:=""; // 这一步在Excel中实际上是多余的,因为G1开始就是空的。
=TEXTJOIN(", ",TRUE,IF(ISNUMBER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)), "",MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))
& TEXTJOIN(", ",TRUE,IF(ISNUMBER(MID(B1,ROW(INDIRECT("1:"&LEN(B1))),1)), "",MID(B1,ROW(INDIRECT("1:"&LEN(B1))),1)))
& TEXTJOIN(", ",TRUE,IF(ISNUMBER(MID(C1,ROW(INDIRECT("1:"&LEN(C1))),1)), "",MID(C1,ROW(INDIRECT("1:"&LEN(C1))),1)))
& TEXTJOIN(", ",TRUE,IF(ISNUMBER(MID(D1,ROW(INDIRECT("1:"&LEN(D1))),1)), "",MID(D1,ROW(INDIRECT("1:"&LEN(D1))),1)))
& TEXTJOIN(", ",TRUE,IF(ISNUMBER(MID(E1,ROW(INDIRECT("1:"&LEN(E1))),1)), "",MID(E1,ROW(INDIRECT("1:"&LEN(E1))),1))))
```
但是上面的公式非常冗长且难以维护,对于每一列都重复了相同的逻辑。更简洁的方式是使用数组公式,如果所有的A1到E1单元格中的文本都是连续的,没有空格分隔,可以尝试下面的方法:
```excel
=TEXTJOIN(", ", TRUE, IFERROR(--MID(CONCAT(" "&A1:E1), FIND(" ", CONCAT(" "&A1:E1))-1+ROW(INDIRECT("1:"&LEN(CONCAT(" "&A1:E1)))), 1)*0, ""))
```
注意:这是一个数组公式,因此你需要使用`Ctrl` + `Shift` + `Enter`来输入它,而不是只按`Enter`。这会在公式的两边加上大括号`{}`,表示它是一个数组公式。
然而,这个公式会将所有字符包括空格都视为“文字”,并且会把它们全部提取出来。如果你的A1到E1单元格中有数字和文字混合,并且你想去除数字,你可能需要进一步修改上述公式或使用VBA宏来达到目的。
如果你只需要提取每个单元格中的非数字部分,而不需要合并成一个字符串,那么你可以对每个单元格分别应用一个公式,例如:
```excel
=IF(ISNUMBER(LEFT(A1,1)), "", LEFT(A1,1)) & IF(ISNUMBER(MID(A1,2,1)), "", MID(A1,2,1)) & ... & IF(ISNUMBER(RIGHT(A1,1)), "", RIGHT(A1,1))
```
但这种方法不实用,因为你需要为单元格中的每个字符写一个`IF`条件。使用数组公式或VBA会更高效。