避免使用 Excel 截断我的数字的最后几位数字

避免使用 Excel 截断我的数字的最后几位数字

正如所指出的此网址,Excel 可以处理的最大数字约为 10^307。
不过,Excel 似乎也难以处理较小的数字(约 10^17),正如您从我的示例中所见:

我正在开发一个 SQL 服务器数据库,其中包含条形码作为表格中的一个字段。这些条形码通常有 18 个字符,例如 154105070221597646。

当我将此类数据从 SQL 服务器数据库表(使用 Microsoft SQL Server Management Studio)复制到标准 MS-Excel 工作表中时,它会变成一个“通用”数字(如 1.54105E+17),其实际值似乎为 154105070221597000(请注意最后三位数字已变成零)。

目前,我复制数据,将该列的格式更改为文本,然后再次复制整个内容,这是可行的,但由于我需要定期执行此操作,所以我希望有一种更简单的方法。

我怎样才能告诉 Excel 停止截断数字的最后几位数字?

供您参考:如果我将条形码输入单元格并执行“转换为数字”,也会发生这种情况,正如您从此屏幕截图中看到的那样:

在此处输入图片描述

答案1

第一个选项 - 提前将单元格格式化为文本。我不太喜欢这个,因为它需要额外的步骤,但如果在粘贴之前单元格已经格式化为文本,则应该保留该格式。

第二种选择 - 我的首选 - 不是从 SSMS 复制,而是使用另存为将输出保存到制表符分隔的文本文件,然后使用文本导入向导在 Excel 中打开该文件。在此过程中,您可以选择每列的格式;选择文本作为格式应确保数据将被视为文本字符串而不是值。

在此处输入图片描述

第三种选择 - 使用简单的宏来粘贴值。VBARange.PasteSpecial中的方法与用户界面中的 PasteSpecial 功能不同,如果没有给出其他说明,它将以简单文本的形式粘贴值。宏将类似于

Sub PasteAsText()
    Selection.PasteSpecial
End Sub

在这些选项中,我通常更喜欢第二个选项,因为它可以让您最大程度地控制数据,并且不依赖于有时不稳定的剪贴板。

答案2

帮助您可靠地创建数据完整文本副本的提示;

在条形码(-data)前面添加首字母' [1]当您从 SQL 生成/导出数据时;这将阻止 Excel 摆弄它,因为它(通过这个)在到达时被明确定义为“TEXT”。

[1]CHAR(39)在 Excel 中

答案3

由于您正在使用 SQL 数据库,所以这可能是一个选择。

在 SQL Server Management Studio 中,不要执行查询,而是SELECT * FROM TABLE在其中添加连接,以便 Excel 单元格将数据视为文本。

SELECT CONCAT('="', [Column], '"') FROM Table.dbo.Database

这将返回如下结果:

在此处输入图片描述

在 Excel 中将显示如下内容:

在此处输入图片描述

相关内容