Excel - 可变长度数字中的可变数量的前导零?
Posted
技术标签:
【中文标题】Excel - 可变长度数字中的可变数量的前导零?【英文标题】:Excel - Variable number of leading zeros in variable length numbers? 【发布时间】:2012-09-24 21:28:48 【问题描述】:多年来,我们的会员号码格式已多次更改,例如 00008、9538、746、0746、00746、100125 和其他各种排列是有效的、唯一的并且需要保留。从我们的数据库导出到大规模更新所需的自定义 Excel 模板会去除前导零,这样 00746 和 0746 都会被截断为 746。
插入撇号技巧或格式化为文本在我们的案例中不起作用,因为在我们在 Excel 中打开数据时,数据似乎已经被更改。格式化为 zip 不起作用,因为我们有长度小于五位的有效数字不能添加零。而且我对“自定义”格式没有任何运气,因为这似乎需要向数字添加相同数量的前导零,或者向每个数字添加足够的零以使它们的长度相同。
有什么线索吗?我希望有某种方法可以将 Excel 设置为只接受它给出的内容并不管它,但情况似乎并非如此!我将不胜感激任何建议或意见。提前非常感谢大家!
更新 - 感谢大家的帮助!这里有一些更具体的。我们正在使用第 3 方会员管理应用程序——我们无法直接访问数据库,我们需要使用他们的“查询构建器”工具来获取我们想要大规模更新的数据。然后我们使用他们的“模板”格式导出,它被称为 XLSX 但幕后肯定有一些事情发生,因为如果我们尝试导入常规的旧 Excel,我们会得到一个错误。只有他们的模板有效。
数据库中的数据格式正常,因为所有数字都在基于 Web 的管理工具中正确显示。另外,如果我导出为 CSV,将其另存为 .txt 并将其导入 Excel,数字显示正常。
我所做的与下面 ooo 的解释类似——我导出了带有错误数字的模板,然后导出为 CSV/txt,并将这些数字复制/粘贴到模板中并重新导入。我没有收到错误,这是我猜的,但是直到午夜之后我才能知道它是否成功! :-(
【问题讨论】:
数据是如何从数据库中出来的?您是导出到文件然后打开它吗? 一旦您的数据在 Excel 中,您肯定无能为力。您必须以不同方式导出数据,或在导出前修改数据库中的数据。当您告诉我们更多有关您当前的出口流程的信息时,我们将能够提供更具体的建议。 你好 dash 和 John Y,我希望我能稍微澄清一下发生了什么。如果您需要更多细节,请告诉我!感谢您的帮助! 典型的第 3 方公司,他们允许您输入数据,但绝不让您获得所需的数据,除非一次只有 1 条记录或“自定义”报告 :) 也许您需要再次将会员编号更改为 M0000000000012345 - 假设您很受欢迎 :) 【参考方案1】:你在使用撇号的正确轨道上。 在将数字添加到文件时,您需要将数字作为文本存储在 Excel 中。
您使用什么来创建原始 excel 文件/从数据库导出? 这可能是您在出口方面需要关注的地方。
例如,一种方法是您可能会修改数据库导出以在数字前包含 '
符号前缀,以便 excel 知道将它们显示为文本。
【讨论】:
嗨,Gimp,我更新了上面的原始问题。我们正在使用我们无法编辑或修改的第 3 方系统。但是,它确实保留了数据——如果我们以 XML 或 CSV 格式导出为 .txt,这些数字就可以了。只有当我们在 Excel 中打开时才会出现问题。感谢您的回复!【参考方案2】:假设数据库中的数据没有损坏,然后尝试从数据库导出到 csv 或文本文件。
然后可以执行以下操作以确保导入格式正确
带有逗号分隔符的文本文件:
在 Excel 数据/从文本中选择 Delimited,然后选择下一步
在导入向导的第 3 步中。对于您希望作为文本的每一列/字段,突出显示该列并选择文本
然后应将数据作为文本放置并保留前导零。
同样,所有这些都假设数据库包含未损坏的数据,并且您能够导出简单的文本或 csv 文件。它还假设您拥有 Excel 2010,但可以在所有版本之间进行细微的改动。
【讨论】:
ooo,我认为我们或多或少在同一页面上。我正在使用您的确切步骤,并将格式正确的数字粘贴到我们需要用来进行大规模更新的特殊模板中。直到午夜才处理更新,所以我会看看我所做的测试会发生什么,使用你的方法,明天我会第一件事告诉你!不过,我真的很感谢您的帮助,这些屏幕截图很棒!非常感谢! 如果在执行这些步骤时打开宏记录器,您可以每次运行宏,而不是手动执行。如果有很多字段很有用。 如果没有别的,我必须为截图投赞成票。答案的清晰度和用户友好性真的很棒。现在,我们只需要希望 daltec 所背负的软件能够接受它。 我同意 John Y,这真的是另一回事!我刚才也投了赞成票。我一定会看看发生了什么,明天第一件事! 我很高兴地宣布您的解决方案非常有效!我仔细检查了记录,即使是那些我故意引入一些错误作为对照的记录,一切都顺利进行。事实上,我重新导出了更改的记录,以确保会员编号仍然正确,一切顺利。非常感谢,这对我们来说将是一个很大的帮助!非常感谢您抽出宝贵时间,事实上,如果您不介意,我想将您的屏幕截图转发给我的同事,以确保我们都使用正确的方法。【参考方案3】:希望@ooo 的回答对您有用。我提供另一个答案主要是为了提供信息,并且不想处理 cmets 的限制。
要理解的一点是,Excel 非常积极地将“看似数字”的数据视为实际数字。如果您要通过双击打开 CSV 并让 Excel 执行它的操作(而不是使用 ooo 的仔细程序),那么这些数字仍然会以数字形式出现(没有前导零)。正如您所发现的,解决此问题的一种方法是将明确的非数字字符附加到您的数据中(在 Excel 得到它肮脏的手之前),以真正说服 Excel 它正在处理的是文本。
现在,如果上传到他们软件的文件是以.xlsx
结尾的文件,那么它很可能是当前的 Excel 格式(压缩的 XML 文档,Excel 2007 及更高版本使用)。我想“常规旧 Excel”是指 .xls
(它仍然适用于“兼容模式”下的较新 Excel)。
因此,如果您迄今为止尝试的方法不起作用,在诉诸将字符附加到数据末尾之前,仍有一些途径可以探索。 (我会根据需要更新这个答案。)
【讨论】:
嗨,John Y,当我花时间坐下来想一想时,这很有意义。而且您是 100% 正确的,这几乎就像您需要在导入数据之前欺骗 Excel。我们还发现 xlsx 和 xls 都可以工作,但 csv 或其他任何东西都不能。而且,我们不能创建自己的 XLSX,它必须使用他们的“模板”文件,否则我们会得到一个错误。即使看起来完全相同,列的名称也相同,依此类推。任何! ooo 的解决方案是几个额外的步骤,但它会为我们节省一些时间!【参考方案4】:我使用公式=text(cell,"# of zeros of the field")
来添加前面的零。
例如,单元格C2
有 12345,我需要它是 10 个字符长。我会输入=text(c2,"0000000000")
。
结果将是 0000012345。
【讨论】:
以上是关于Excel - 可变长度数字中的可变数量的前导零?的主要内容,如果未能解决你的问题,请参考以下文章