VBA:不在单元格中显示尾随零的最有效方法

VBA : Most efficient way to not display trailing zeros in a cell

提问人:Tounn 提问时间:11/16/2023 最后编辑:Tounn 更新时间:11/20/2023 访问量:89

问:

看到这篇文章后,我想知道当值作为字符串存储在单元格中时,使用 VBA 删除单元格中尾随零的最佳方法是什么。我的意思是最短的代码行和最快的方法(这两个标准在本问答中都很重要)。the best way

我尝试了这个有效但对我的眼睛来说不够有效:Sheet_Nomenclature.Cells(i, 10) = Trim(Sheet_Nomenclature.Cells(i, 10) / 10) * 10

编辑:多亏了这些评论,我将对一些可能造成误解的观点进行一些精确度的介绍。

当我说这是不正确的时,我的意思是这就是这个解决方案有效的原因。remove trailing zerosnot display the trailing zeros

目标也是这样的:或者23,450 -> 23,4523,000 -> 23

希望每个人都能更清楚这一点。

Excel VBA 格式

评论

2赞 BigBen 11/16/2023
“删除”的具体含义是什么?不显示?如果是这样,请更改单元格的 ..NumberFormat
0赞 Paul 11/17/2023
这些值实际上是字符串(单元格格式为文本)还是数字?如果是数字,请使用 ;如果是字符串,请使用文本替换。或者,像@etienne一样,将其设置为数字(但首先要确保单元格未格式化为文本)。.NumberFormat

答:

-1赞 Tounn 11/16/2023 #1

这是我自己找到的最准确的答案:Sheet1.Cells(i, 8) = CDbl(Sheet1.Cells(i, 8))

注意:本问答仅讨论尾随零(值后面的零)。我希望我能理解这是我在SA上的第一个问答。

评论

2赞 FaneDuru 11/16/2023
“值后面的零”是什么意思?至少向我们展示一个例子应该是件好事。你的意思是吗?如果是这样,它是否只是以这种方式格式化,还是一个字符串?查看您“找到”的解决方案,它可能是一个字符串/文本。如果是这样,你应该说出来......002345.234
2赞 FunThomas 11/16/2023
您的代码的作用是将字符串转换为数字。这不是“删除零*,而是将其转换为完全不同的数据类型。字符串可以包含您想要的任何字符(它也可以看起来像一个数字)。一个数字永远不会有任何前导或尾随零。
0赞 Storax 11/20/2023
如果单元格的格式为具有“尾随”零,则该解决方案将不起作用。DV系列
0赞 Tounn 11/20/2023
@Storax是的,这就是为什么我说,这是问答,我做一个特定的案例......
0赞 Storax 11/20/2023
具体情况是什么?帖子中没有任何关于特例的内容!如果我将单元格格式化为显示尾随零,则代码不会删除该数字格式。所以 23,000 不会变成 23!