将excel数字复制到剪贴板时的十进制精度

时间:2013-09-27 02:05:41

标签: excel matlab clipboard clipboarddata

我正在Windows 7 x64下编写一个MatLab程序,它使用剪贴板,从Microsoft Excel复制混合数据,并将其直接导入MatLab到一个char数组中。

当我在MatLab中使用str = clipboard('paste')时,从excel复制的所有文本数据都很好,但复制的数字数据会丢失一些小数位。

例如,如果单元格A1包含数字2113.12389881239,但由于单元格格式化而仅显示值2113.123899,则将2113.123899从excel复制到MatLab而不是实际单元格值21​​13.12389881239。

我想知道如何复制存储在Excel中的确切单元格值而不是显示的值。

提前致谢。

1 个答案:

答案 0 :(得分:0)

给出以下值:.1234567,格式化为1-7个小数位的所有值,当我复制粘贴到另一个程序(记事本)时,我得到以下结果:

0.1 
0.12 
0.123 
0.1235 
0.12346 
0.123457 
0.1234567 

假设您想一次复制一个号码,我使用了这个宏:

Sub FormattedCopy()

    Dim oldFormat, copyString As String    

    oldFormat = Selection.NumberFormatLocal

    Selection.NumberFormatLocal = "@"

    Selection.Copy

    MsgBox ("Please paste your data")

    Selection.NumberFormatLocal = oldFormat

End Sub

消息框用于“暂停”该过程,因为更改数字格式将清除剪贴板。当我粘贴任何值时,它会在记事本中正确显示为0.1234567

如果您在数组中保存数字格式的范围并按照上面的for循环反馈,则可以使用一系列值执行此操作。