这与问题相反Excel 中的数字格式:显示 % 值而不乘以 100。
我的数据格式是这样的,例如,单元格的原始内容为 0.75“表示”75%。我正在设置一个过程,将此类数据传输到另一个程序(Adobe Illustrator),如果数字包含任何符号(甚至是 %),该程序就会出错。
我想做这件事无需修改内容或工作表的结构,因此,没有新的列,也没有对基础数据进行任何更改。显然,如果没有这个限制,添加一个带有类似公式的列=A1*100
将非常容易。我想避免这些,因为这些工作表很复杂,它们是由执行此过程的人以外的团队维护的,我不希望执行此过程的人更改工作表的实际内容,而只是更改一些容易逆转的展示内容,例如新的数字格式。
是否有任何数字格式或类似的表示层修改可以让我将存储的数据复制0.75, 0.5, 0.25
并粘贴到另一个应用程序中75, 50, 25
?
神奇的“百分比”数字格式(乘以 100)似乎在自定义格式中列出0.00%
,但只需删除%
也会删除乘法。
我发现一个博客(Chandoo)建议#,#.#
使用[ctrl-J]之类的格式%
将百分号隐藏在新行下方,但这对我来说不起作用,因为我需要为用户将复制并粘贴输出的应用程序提供干净的输出。
答案1
您可以使用此宏来完成工作。但首先,您必须添加对 Microsoft Forms 2.0 库的引用。按 Alt+F11 调出 Visual Basic 编辑器,然后单击工具 >> 引用... 向下滚动直到看到Microsoft Forms 2.0 Object Library
并选中旁边的框,然后单击确定。如果您没有看到它(它们按字母顺序列出),则需要通过 dll 添加它。单击浏览... 并浏览并添加C:\Windows\System32\FM20.DLL
。
用法:选择范围(您可以选择整个列)并通过对用户来说最方便的方法调用宏。宏运行后,数据将位于剪贴板上。您可以创建一个按钮、分配一个热键或通过功能区手动运行它。我假设所有值都是用公式计算的,并且没有任何空白单元格。它根本不会修改工作簿,因此如果您的用户搞砸了并选择了错误的列,则不会对您的数据产生任何影响。
Option Explicit
Public Sub CopyPercentAsWholeNumber()
Dim Arr() As Variant
ReDim Arr(1 To Selection.SpecialCells(xlCellTypeFormulas).Count)
Dim i As Long
With Selection
For i = 1 To UBound(Arr)
Arr(i) = .Cells(i).Value * 100
Next i
End With
Dim S As String
Dim objText As New MSForms.DataObject
S = Join(Arr, vbCrLf) & vbNewLine
objText.SetText S
objText.PutInClipboard
End Sub
答案2
快速解决
突出显示数字。继续自定义格式,输入 0.00,然后按 ctrl+j 键,输入百分号。然后继续对齐并单击换行。单击确定
这会隐藏 % 符号,但这意味着您可以将列名更改为您使用的单位。