,##0_);(#,##0).

,##0_);(#,##0).

我想应用公式

=TEXT(A1,IF(A1-INT(A1)=0,"0","#.####"))

到带有数字的现有单元格,无需复制和粘贴。

现有的电子表格已经很大而且已经填好,我不想再创建另一个副本然后删除重复的内容。

我试过使用选择性粘贴。stackoverflow 上也有类似的问题:https://stackoverflow.com/questions/21560480/excel-apply-formula-to-existing-cells-value-without-copy-paste 但那需要算术运算,而我应用的这个算法/​​公式更复杂。我问过减少 Excel 中的有效数字

https://stackoverflow.com/questions/58507643/excel-apply-complicated-formula-to-existing-cells-value-without-copy-paste?noredirect=1#comment103343484_58507643我听说有一种方法可以使用自定义单元格格式来执行此操作,指定数字格式代码,如下所示

,##0_);(#,##0).

问题是我不熟悉数字格式代码的语言。

单元格格式的快捷方式

答案1

如果你只是想解决原来的问题:

格式化整个 Excel 电子表格,使小数点后只有 3 位数字

第二个答案有一种方法不会改变任何实际值,因此可以相当容易地应用于所有不需要特殊训练的单元格。

它还为建议的日期格式提供了精确、可复制的字符串,以便可以将它们粘贴到需要的地方。

您第二次提出这个问题时,产生了这种文本更改方法。如果您这样做,底层数据将更改为文本。您似乎对此很满意,所以……但这并不能如您所愿。

问题是您无法使用诸如格式化之类的功能,甚至无法使用“粘贴|特殊”功能(如果您能够复制和粘贴的话)来更改某些内容以使其适合公式并受其影响。这在 Excel 中无法实现。

不过,为了达到你想要的效果,你至少可以做两件事,尽管第二件事是复制粘贴技术。(不幸的是,另一个使用 VBA,如果我是一个赌徒,你对日期格式的不熟悉,在这个问题中这么说,会让我认为 VBA 不是你经常使用的东西。)

1) 编写一个宏来检查数据的结尾,这样它就不必在可以知道和避免的情况下处理数十亿个毫无意义的单元格。然后让它从那一端开始并沿着行返回(或沿该列向上开始,尽管行更容易)基本上首先查看单元格是否为空白,如果不是,则设置一个等于单元格原始内容的变量,然后将内容放在由此处的公式组成的字符串中,然后将单元格的内容设置为以该字符串为文本的公式。然后让它向左移动一个单元格(这会在发现它为空白后立即发生)并再次执行所有操作。当它完成该行的 A 列时,让它回到原始列,向上一行,然后继续前进。

它会一次进行一个更改,因此几乎不需要付出任何努力,而不是像复制和粘贴的方法那样尝试一次更改 43,000,000 个(或更多),这可能会使您的机器过载(我认为过载问题是您不想复制和粘贴任何内容的原因。)

2) 这是复制粘贴的方法。也许这并不是您要担心的问题(超载、使 Excel 停止运行、甚至丢失文件),而是您认为您必须手动进行几百万次复制粘贴。但是,如果您愿意或能够,请创建一个新的工作表,找到当前工作表的数据末尾(按Ctrl-End)并记下单元格地址,转到新工作表(其单元格 A1),输入此公式,当您需要输入单元格 A1 的地址时,使用鼠标单击当前工作表的单元格 A1(这样您就不必输入工作表名称等),然后使用 保存单元格ENTER

现在复制它并转到此新工作表上与另一张工作表上数据结尾匹配的单元格地址。按突出Shift-Ctrl-Home显示所有内容回到 A1。复制该区域。(如果 Excel 对此犹豫不决,您需要分块进行。)返回原始工作表的单元格 A1,然后选择粘贴|特殊|值,使用您喜欢的 5-6 种方法之一。

完毕。

但是如果您想要一种更快、更简单的方法,可以精确地保留数据的当前状态,只需改变其外观,请查看我对您之前的问题给出的答案。

相关内容