如何在 Microsoft Excel 中删除文本只保留数字,或反之2025年3月17日 | 阅读11分钟 在本教程中,我们将学习如何利用内置公式和自定义函数在 Microsoft Excel 中轻松地将文本与数字分开。我们还将学习如何轻松地将文本和数字拆分到两个单独的列中。 现在,让我们设想一下:我们收到需要分析的原始数据,发现相应的数字与文本混合在一个列中。在各种情况下,将它们放在单独的列中会更方便,以便仔细检查。 除此之外,如果我们处理的是同类数据,那么在这种情况下,我们可以有效地利用 LEFT、RIGHT 和 MID 函数来分别提取相同位置上相同数量的字符。 但这可能是实验室测试的理想场景,而在现实生活中,我们更有可能处理的是不同类型的数据,其中数字通常出现在选定的文本之前、之后,或者夹在文本中间。 下面的示例将为此类情况提供有效的解决方案。
如何在 Microsoft Excel 中轻松地从给定的数字中删除文本?此解决方案可高效应用于 Microsoft Excel 365、Microsoft Excel 2021 和 Microsoft Excel 2019。 我们都知道,Microsoft Excel 2019 版本引入了一些新函数,这些函数在早期版本中并不容易获得。因此,我们在这里使用了一个这样的函数,即:TEXTJOIN 函数;该函数用于从包含数字的相应单元格中剥离文本字符。 Microsoft Excel 中 TEXTJOIN 函数的通用公式如下: 此外,在 Microsoft Excel 365 和 2021 版本中,此方法也同样有效。 乍一看,上面使用的公式可能看起来有些复杂,但它们确实非常有效。
在 Microsoft Excel 365 - 2019 中,我们可以使用以下公式: 在 Microsoft Excel 2019 版本中,必须使用快捷键:Ctrl + Shift + Enter 作为数组公式输入。而在动态数组 Excel 中,公式将按正常方式工作,只需按下键盘上的 Enter 键即可完成。 在 Microsoft Excel 365 和 2021 中,我们也可以使用以下公式: 结果是,所有相应的文本字符都将从单元格中删除,并保留数字。 ![]() 现在让我们看看上述公式的工作原理: 为了更好地理解上述使用的逻辑,让我们从内部开始研究公式,以获得更深入的了解: 我们可以使用 ROW(INDIRECT("1:"&LEN(String))) 或 SEQUENCE(LEN(String)) 来创建数字序列,这些数字对应于给定源字符串中的总字符数。然后,我们将这些序列号作为起始数字馈送给 MID 函数。以单元格 B2 为例,公式的这部分可能看起来像这样: 在上面的公式中,MID 函数主要负责从单元格 A2 中提取每个字符,从第一个字符开始,然后将它们以数组的形式返回。 然后,接收到的数组将乘以数字 1。数值将保持不变,而非数字字符相乘将产生 #VALUE! 错误。 而相应的 IFERROR 函数将负责处理这些错误,并将它们替换为空字符串。 现在,这个最终数组被提供给 TEXTJOIN 函数,该函数将使用空字符串 ("") 作为分隔符来连接给定数组中的非空值。 重要提示:应牢记,Microsoft Excel 2016 - 2007 版本也存在一个解决方案,但该公式比其他公式复杂得多。 如何使用自定义函数在 Microsoft Excel 中从数字中删除文本?此解决方案可适用于所有 Excel 版本,且不会失败。 如果我们使用的是旧版本的 Microsoft Excel,或者忘记了上述公式,那么我们可以创建自己的函数,使用更简单的语法和用户友好的名称,例如 RemoveText。 除此之外,相应的用户定义函数 (UDF) 可以通过以下两种更简单的方式编写: VBA (Visual Basic for Applications) 代码 1 在这里,我们将逐个查看源字符串中的每个字符,然后检查它是否是数字。如果它是数字,那么我们将有效地将该字符添加到结果字符串中。 VBA (Visual Basic for Applications) 代码 2 该代码将有效地创建一个对象来处理正则表达式。通过使用 RegExp,我们将从源字符串中删除除数字 0-9 之外的所有字符。 在小型工作表上,这两个代码的性能都差不多;而在大型工作表上,当函数被调用数百或数千次时,代码 2 使用 VBScript 和 RegExp,因为它们比其他方法快得多。 无论我们选择哪种方法,从最终用户的角度来看,用于删除所有文本并保留数字的函数都非常简单: 例如,如果我们想从单元格 A2 中删除非数字字符,那么在这种情况下,我们将使用单元格 B2 中的公式,如下所示: 然后,我们将此公式复制到列中,并得到以下结果: ![]() 注意。我们已经注意到,无论是内置公式还是自定义函数,它们都输出一个数字字符串。为了将其转换为数字,我们可以将结果乘以 1,加上零,或者将公式用 VALUE 函数括起来。
如何从 Microsoft Excel 的文本字符串中删除数字?该解决方案适用于 Microsoft Excel 365、Microsoft Excel 2021 和 Microsoft Excel 2019。 用于从字母数字字符串中删除数字的公式与上一个示例中讨论的公式非常相似。 对于 Microsoft Excel 365 和 2019 版本: 在 Microsoft Excel 2019 版本中,我们需要记住通过同时按下快捷键 Ctrl + Shift + Enter 将其设为数组公式。 对于 Microsoft Excel 365 和 2021,我们可以使用以下方法:
或 结果是,所有数字都从特定单元格中删除,而文本字符则保留在其中。 ![]() 正如我们在上面的屏幕截图中看到的,该公式将从给定字符串的任何位置剥离数字字符:开头、结尾或中间。 为了删除文本前面的多余空格,我们可以将公式用 TRIM 函数括起来,如下所示: ![]() Microsoft Excel 中的上述公式是如何工作的?我们假设这个公式也会像上一个例子中解释的那样工作。但唯一的区别是,从提供给 TEXTJOIN 函数的最终数组中,我们需要删除数字而不是文本。为了实现这一点,我们将使用 IF 和 ISERROR 函数的组合。 ISERROR 函数将捕获错误,然后将生成的布尔值数组传递给 IF 函数。 除此之外,当 IF 函数看到 TRUE(错误)时,它将通过使用另一个 MID 函数将相应的文本字符插入到已处理的数组中。如果 IF 函数遇到 FALSE(数字),它将用空字符串替换它。 这是最终数组,传递给 TEXTJOIN 以连接相应的文本字符并输出结果。 如何在 Excel 中使用自定义函数从文本中删除数字?这些解决方案最棒的地方在于它们可以有效地适用于所有 Excel 版本。 我们应该记住,我们要使用的公式必须健壮且简单。我们将分享用户定义函数 (UDF) 的代码,用于从选定的 Excel 工作表中剥离任何数字字符。 VBA 代码 1 VBA (Visual Basic for Applications) 代码 2 现在,在“删除文本”函数的情况下,第二个代码更适合在大型工作表上使用,以有效优化性能。 代码添加到工作簿后,我们就可以轻松地通过自定义函数删除单元格中的所有数字字符。 以我们的例子为例,单元格 B2 中的公式是: 为了修剪前导空格(如果有),我们将把自定义函数嵌套在 TRIM 中: =TRIM (RemoveNumbers (A2)) ![]() 如何在 Microsoft Excel 中将数字和文本拆分到单独的列中?在某些情况下,当我们想将文本和数字拆分到两个列中时,在这种情况下,我们将使用单个公式。为此,我们需要将 RemoveText 和 RemoveNumbers 函数的代码合并到一个函数中,该函数名为 SplitTextNumbers,或者简称为 Split。 VBA (Visual Basic for Applications) 代码 1 VBA (Visual Basic for Applications) 代码 2 我们的新自定义函数将需要两个参数: 其中 is_remove_text 是一个布尔值,用于指示需要剥离哪些字符。
对于我们的示例数据集,公式将采取以下形式:
![]() 重要提示:为了避免潜在的前导空格问题,我们始终建议将用于删除数字的公式用 TRIM 函数括起来。 如何使用特殊工具删除 Excel 中的数字或文本?这适用于那些不想把事情弄得过于复杂的人。我们将展示我们自己移除 Excel 工作表中文本和数字的方法。
![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。