将数字格式化为文本并添加字符串

将数字格式化为文本并添加字符串

由于我正在使用 VBA 做一些事情,所以不确定是否应该将其发布在这里或 Stackoverflow 中,但我想要使用的公式只是基本的 Excel:

例如,我的一个单元格中有一个数字:1741579193,58(对于英语使用者来说,它可能会显示(1741579193.58)

我想要以下格式:1.741.579.193,58 EUR(对于英语使用者:1,741,579,193.58 EUR)

在我所在的地区,公式如下所示:TEXT(L33; "#.##0,00;;;")这应该适用 TEXT(L33, "#,##0.00;;;")于英语国家/地区的任何人。我得到了分隔符,但在末尾添加“EUR”却更加困难。好吧,我可以使用=TEXT(L33; "#.##0,00;;;") & " EUR",但我能以某种方式直接在文本公式中添加“EUR”吗?

答案1

您可以使用下面的方法来实现这一点:

=TEXT(A1,"###,###,##0.00")&"EUR"

在此处输入图片描述

或者您可以应用自定义数字格式,因此当您在单元格中输入数字时1741579193.58,它将格式化为1,741,579,193.58 EUR

右键单击要应用它的单元格,然后选择格式化单元格,然后按照下图操作

在此处输入图片描述

答案2

首先要说的是,已经给出的答案非常正确,它为您提供了实现此操作的方法,同时仍允许数据保持为数字。这种方式非常灵活,而自定义格式将允许您几乎根据需要以视觉方式呈现它。

其次,这是一个相当“技术性……”的事情,您实际上可以将“EUR”部分强行塞入实际TEXT()函数本身,而不是在函数完成工作后再添加。您必须意识到,这些双引号之间指定的格式只是一个字符串。它必须是一个“有效的”,可以肯定的是,可以直接在自定义格式功能中工作的格式,但尽管如此,它只是一个字符串。因此,如果您弄清楚如何在自定义格式功能中创建它,并考虑到那里的一些“合法”格式在函数中不起作用TEXT()(通常,我相信,由于在自定义格式功能中使用字符串技术创建它的难度,您直接输入一些 Excel 可以理解的内容,当生成的字符串必须遵循比平常更严格的规则时,甚至可能无法在字符串创建的限制内传达给它)。

因此,不要使用给定的、更方便的,而是space"EUR"使用另一种技术将字符(这里是字母)强制转换为自定义格式字符串 space\E\U\R::

=TEXT(A1,"#,##0.00 \E\U\R")

甚至“#,##0.00”,&" \E\U\R"以确保您记得两年后当您必须编辑工作簿时使用了这个小技巧,但在那两年内从未再次使用过这个技巧......

然而,该技术的一个实际非技术性(但很少见)用途可能是从工作簿中的某个单元格获取输入,用户可以编辑该单元格以获取字符串的组成部分。例如,可能只是“EUR”部分。用户可能在单元格 B1 中输入“EUR”,然后您插入字符,\这样用户就不需要输入它们,甚至不知道它们的存在:

=TEXT(A1,"#,##0.00 "&TEXTJOIN("",FALSE,"\"&MID(B1,SEQUENCE(1,LEN(B1)),1)))

这确实需要SPILL功能,但基本上最后一部分将一个\字符连接到他们输入的每个单个字符,然后TEXTJOIN()将它们拼接在一起以添加到格式字符串中。如果您在显示的结果的另一部分中使用了他们的输入,则正在执行的数据中的值可能已存储为土耳其里拉,并且您利用这一知识,添加他们的输入(假设代表“欧元”)并将里拉转换为欧元,这将是操作的数字部分,取代我上面的“A1”。

当然还有其他方法可以做到这一点,但是这会将两半放在一起,依赖于单个用户输入,所以......

最后,回到这个事实:输出TEXT()是……嗯,文本。不是数字,所以以后更难使用。没错,正如我上面所同意的那样,但不是“超级难”,只是“稍微难一点”。毕竟,你知道你在数字部分添加了什么文本。所以像下面的公式可以为你撤消这一点:

=VALUE(SUBSTITUTE(C1," EUR",""))

(如果结果在 C1 中)。或者结果中的文本。现在它又是一个数字,并且可以在进一步使用时作为数字而不是文本向前滚动。也不是那么难,并且可以让您通过所选机制获得所有领域的最佳效果。

话虽如此,在设计工作簿时多加考虑通常可以避免这种来来回回的反复。值得付出努力!但您不仅必须了解很多可能性(如果您只有一把锤子,您必须让锤子以某种方式工作),而且我们经常要面对另一个重大限制:您将接管别人的工作,您的时间有限,您现在需要结果,而上一个人的工作非常复杂,因此您只能在有限的时间内掌握其中的大部分内容,更不用说安全地重写所有内容了。与此相关的是,用户(即您的老板)通常非常习惯于精确的布局和精确的输入机制,并且(不太常见,哈哈)真正担心您的编辑不会破坏其输出的完整性。无论对错(实际上通常是后者。尤其是当作者IFERROR()自由使用时……),似乎五年来一直正确的东西被认为是有效且无误的。您现在的更改……并非如此。

因此在现实世界中,您通常只能考虑设计以修复所有不理想的工作,并随着时间的推移慢慢将其融入您的编辑中。与此同时,您需要上述内容。无论您多么想使用“适当的设计”。

相关内容