我该如何去掉这些导致简单乘法失败的前导空格?

我该如何去掉这些导致简单乘法失败的前导空格?

我有一张表格,其中列出了植物、数量和价格。不知为何,大多数价格都有一些前导空格,我猜想这导致了我在尝试应用加价乘数时出现 #VALUE 错误。

我尝试过修剪、修剪(清理)、选择性复制/粘贴、查找/替换,但都不起作用——最后我仍然有以空格为前导的数字。

我甚至将其导出到 csv,然后重新导入到 excel,因为我认为某种格式会导致麻烦。

这到底是怎么回事?有没有什么方法可以让我发布部分工作表以供审阅?

引用

答案1

数字中有不同类型的空格(不间断空格)。这些通常是CHAR(160)。TRIM 和 CLEAN 都无法删除这些空格,因为 Excel 将它们视为有效字符。但这会生成“数字”文本字符串,因此无法相乘。

因此我们使用 SUBSTITUTE 删除这些字符,并加入 TRIM 和 CLEAN 以获得更好的效果:

=TRIM(CLEAN(SUBSTITUTE(C2,CHAR(160),"")))*2.5

答案2

你可能会遇到很多“不间断空格“ 不由 处理CLEAN()。这在从网页获取数据时非常常见,因为它们(如 PDF)只关心视觉呈现,而不是有人抓取数据以供进一步使用。但它来自大量输出数据的程序,特别是当它们不描绘数据的一般用途,而是描绘一组有限的人使用它时。或者 28 年前编写 CSV 输出功能时,从未更新过。

在电子表格中处理这个问题会更容易,因为您实际上只想要数字部分,而不需要任何非数字部分。

如果您需要保留值为负的指标,那就更难了。或者保留除这些空格以外的任何字符。或者像我一样,获取需要输出为离散数字的字符串。在像“90.02 45.55 .062”这样的字符串中,但保留以便可以提取它们。

但是,您只需要单个字符串中的数字,然后由 Excel 将其视为数字。以下公式可实现此目的:

=VALUE(TEXTJOIN(,TRUE,IFERROR(MID(C1,SEQUENCE(1,LEN(C1)),1)*1,"")))

它用于SEQUENCE()获取一系列以 1 为增量增加的值,并且长度与目标的长度相同。然后,​​它使用这些值来指定函数的起始点,MID()该函数输出目标中字符的矩阵。然后,它*1对该矩阵中的数字执行数学运算 ( ),但对于非数字 (0-9) 的任何内容都会给出错误。IFERROR()将该字符串转换为数字,并在出现错误的任何地方(目标没有数字的任何地方)使用“”。TEXTJOIN()然后将该矩阵转换为简单的输出字符串,忽略那些“”元素,这样您现在就拥有了一个有用的字符串,该字符串仅包含目标中存在的数字。它被视为文本并将如此显示。

目前,如果您拥有较新版本的 Excel,该公式对您很有用。这是因为 Excel 会将一串数字识别为数字,即使它们被格式化为文本(毕竟它们只是格式化,并没有从根本上改变),如果将其提供给需要或合理地期望仅将数字数据作为输入的函数。因此,“C1+1”甚至会将该文本视为数字并进行加法运算,而不是给出错误或给出 0+1=1。然而,并非所有函数都会以这种方式处理输出。VLOOKUP()会将其视为任何看起来的样子,在本例中为文本,并在数字表中查找未找到匹配项,从而给出错误。因此,我将上述内容包装起来VALUE()以完成,以便将结果视为数字,如果您将结果用作查找函数的输入(似乎其他人可能会这样做),它将起作用。

因此,您可以删除该功能,它仍会根据需要执行标记乘法。

但是,如果您没有新SPILL功能,或者尤其是如果您拥有较旧的 Excel 版本,则以下公式基本上适用于所有版本的 Windows Excel,并且始终会产生数字输出:

{=ROUND(NPV(-0.9,0,IFERROR(MID(L1,LEN(C1)-ROW(INDIRECT("C1:I"&LEN(C1)))+1,1)/100,"")),3)}

请注意,这是一个加拿大教育标准局公式。用作常规公式时,有时会删除最后两位数字……输出格式为货币。(Excel 很有用……因为这NPV()是财务函数,您必须将其格式为货币,对吗?)

上述公式来自“很久以前互联网上的某个地方”……我希望可以引用我的出处,但我记不起出处了。向某位热心的大师致歉。

很高兴你问了这个问题,因为我在很多地方都遇到过这个问题,需要更新一下如何SEQUENCE()才能帮助到你。更不用说将函数中的内部矩阵更改为输出的有用字符串,TEXTJOIN()因为现在也可以使用这个了!立竿见影!这是一件很棒的事情!

相关内容