Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

2024-06-26

我一直在尝试更多地了解 Excel 单元格,特别是它们的数据类型。如果有人对细节感兴趣,我的调查位于下面的编号点中。我的结论被标记为 A 到 D。我真的很感兴趣是否有人有什么可以补充的。

答:每个 Excel 单元格都有一个属性,用于定义它将存储的数据的预期“数据类型”。存储在单元格中的数据值还具有“数据类型”属性,该属性不必与单元格“数据类型”属性相同。 (数据类型为常规、文本或日期)。 (单元格的数据类型与使用“设置单元格格式”>“数字选项卡”“格式类别”设置的单元格格式不同,但相关

B. 当数据输入单元格时,赋予数据值的数据类型继承自单元格的数据类型(当数据值可以转换为单元格数据类型时)。如果数据开头包含 ' 字符,则会导致将文本数据类型分配为值的数据类型,而不管单元格数据类型如何。

C. 当您使用 Excel 复制 > 粘贴(仅限值)将数据值从一个单元格复制到另一个单元格时,数据类型也会被复制。 (这有点疯狂,因为在特殊粘贴中没有对此进行覆盖。您可以使用 PasteSpecial>Raw 选项来实现)

注意:如果您从文本文档(例如01234)粘贴数据,则使用默认粘贴将导致文本0123 转换为数字。使用仅值粘贴,01234 将粘贴一个数据类型为文本的值 - 如果单元格的数据类型是文本。

D、进入=SUM(1,2)插入具有文本数据类型的单元格会导致显示公式但不计算公式。即它被视为文本数据。

请注意,此 VBA 函数可用于将单元格中存储的数字值的数据类型转换为具有相同字符的文本数据类型。只需引用要使用公式转换的单元格即可。您可以使用复制>特殊粘贴(仅限值)将转换后的值移动到单元格中,以便将其存储为值。

Public Function ConvertValueToHaveTextDataType(Avalue As Variant) As String

    ConvertValueToHaveTextDataType = CStr(Avalue)

End Function

这就是我得出这些结论的原因。

我一直在尝试并发现:

  1. 使用将数据加载到工作表单元格中QueryTables.TextFileColumnDataTypes有一个参数TextFileColumnDataTypes可以分配的xlTextFormat, xlGeneralFormat和一些日期格式。没有数字选项。所以使用xlGeneralFormat加载数字数据似乎是“它是如何完成的”。

  2. 基于此,我假设每个 Excel 单元格都有一个“数据类型”(即常规、文本或日期)。

  3. “设置单元格格式”将更改数据的显示方式,同时也会更改输入数据时它们的行为方式,即更改单元格格式也可以更改单元格的“数据类型”。当单元格格式为文本时,输入“01234”将使输入的数据存储为文本,并保留前导“0”。当单元格具有 GENERAL 格式时,输入“0123”将导致其存储为数字 123(即注意删除了 0)。

  4. 考虑一个具有 TEXT 格式的单元格,并且“0123”存储为文本值。将单元格的格式更改为 GENERAL 或 NUMBER 不会更改单元格中存储的字符,但会向单元格添加一个绿色标记,提供“弹出警告”,通知您“数字存储为文本”。 (粘贴特殊,乘法可用于将它们转换为数字)

  5. 这就是奇怪的地方。

如果您在按 ENTER 键时编辑存储在“常规格式单元格”中的文本值“0123”,则“0”将被删除,并变为 123,这正是您所期望的。但是,如果您复制“0123”单元格并使用“仅值”选项进行粘贴,则数据将粘贴为“0123”,如果将其粘贴到数字格式单元格中,也会发生同样的情况。因此,当您使用 excel copy>Paste(Values Only) 复制数据值时,数据类型也会被复制。 (这太疯狂了!)。

如果您将数字或通用格式单元格中存储为数字的 123.12 粘贴到文本格式单元格中,则该值仍为 123.12 并且单元格类型仍为文本,不会显示弹出警告,我不确定该单元格的数据类型是什么值是。但是,如果您编辑单元格并按 RETURN 键输入 123.12,您会收到警告标签并弹出窗口显示“数字存储为文本”

  1. 更复杂的是,如果您想在 NUMERIC 格式的单元格中输入数字 0123,并让它存储文本“0123”,您可以将其输入为“0123”,表示 excel 应以文本数据类型存储该值。 这很有用。
    请注意,如果您要使用LEFT({acell stroing '0123},1)它将返回“0”。这没关系。另请注意,如果您将存储“0123”的数字格式单元格复制并粘贴(仅限值)到通用格式单元格中,则该单元格将不再显示“”,并且您会收到绿色弹出警告“数字存储为文本”。这是好的,但值得注意。

  2. 公式=TEXT("123","0###")创建一个文本数据类型的值。如果复制并粘贴结果,它将成为文本数据类型的数据值。

  3. 公式 T 很有用,因为它可用于确定存储在单元格中的值的数据类型是否为 TEXT。=T(0123) = "" =T("0123") = 0123

  4. 如果您在公式中引用单元格并将单元格值加 1,则单元格数据类型和值的数据类型对计算没有影响。数据值被隐式转换为必要的数字。

  5. 正如您所期望的,将数据粘贴到单元格中时,如果您选择匹配目标格式并且要将数据粘贴到的单元格使用 TEXT 格式,则任何带有前导“0”的数据都将保留 0。

有人读到这里了吗?


如果您想在数字上显示前面的零,只要小数点前有固定位数的数字,您可以自定义单元格格式,例如'0000.00'。 此示例将始终显示小数点前四位数字和小数点后两位数字;它有其局限性,但非常有用,例如产品代码。如果您标准化 7 位代码,请将自定义格式设置为“0000000”,“0001234”将保持正确(而不是“1234”),并且仍然被识别为数字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中 的相关文章

  • 如何在没有任何数据行的情况下读取 Excel 表/ListObject 中的计算列的公式

    我有一个以外部查询作为数据源的 ListObject 它返回 18 列 ListObject 之前已添加了额外的 4 个计算列 现在 ListObject 有 0 个数据行 但是 虽然有 0 个数据行 但我似乎无法读取计算列的预定义公式 如
  • 错误:如何读取 Excel 中的空单元格

    我正在尝试使用 POI 从 Excel 读取数据 如何检查该单元格是否为空单元格 我不知道缺少什么我认为这应该有效 java util Iterator
  • Excel HTTP 获取超时

    我们有这个小子 它只是将数据泵入远程服务器 一切都按预期进行 前几天 网络服务器发生了一次持续大约一个小时的事件 我仍然可以 PING 服务器 但 IIS 没有响应 结果 宏只是挂起等待响应 关于快速通过 失败测试或超时有什么想法吗 Sub
  • Mac 上使用 Excel VBA 进行正则表达式

    我需要将 regEx 与 Excel VBA 一起使用 我使用的是 Mac OS 10 10 和 Office 2011 因此没有可以使用的 DLL 文件 这里有什么可做的 我读到我必须绑定一个苹果脚本 这是如何完成的以及该脚本需要什么内容
  • 在 VBA 中声明字典

    我收到错误Run time error 424 Object required当我尝试在 VBA 中创建字典时 我的代码如下所示 Private Sub data Dim dicti As Object Set dicti CreateOb
  • VBA:如何从 MS Access 运行另一个应用程序

    我一直在试图解决这个问题 但似乎我在任何地方都找不到解决该问题的方法 这是第一部分 VBA Shell 命令始终返回 找不到文件 https stackoverflow com questions 10439024 vba shell co
  • 自动创建 Outlook 约会

    我有一个跟踪到期日期的电子表格 excel 2003 我想知道是否有办法让这些到期日期在 Outlook 中创建约会 提醒 到期日期位于电子表格的一个字段中 实体名称位于另一列中 理想情况下 我希望 Outlook 2003 能够获取日期
  • 使用 php 和 symfony 从数组创建 Excel 文件

    我正在尝试使用 PHP 和 symfony 将数组导出为 XLS 文件 如下面的代码所示 创建 XLS 文件后 我只能获取数组的最后一行 并且它显示在文件的第一行中 似乎 lignes 变量没有增加 我不明白出了什么问题 有人可以帮忙吗 f
  • 重新查询时如何避免转到第一条记录?

    在 Access 2010 中制作一个表单 我试图制作一个移动到下一条记录 如果在末尾则为第一个记录 的按钮 但因为我想考虑其他用户对已发生的数据集的更新与此同时 我在转到下一条记录之前重新查询表单 我正在使用以下代码 改编自这个帖子 ht
  • 如何使用其基本名称而不是 Item(#) 选择 XML 子节点?

    我有点陷入以下困境 我尝试使用 VBA 将当地银行网站的汇率获取到 Excel 主要用于 XML 解析练习 我想说这是我第一次认真的尝试 经过几个小时的谷歌搜索和阅读相关的 SO 问题后 我得到了或多或少可行的解决方案 但我想对其进行优化以
  • Excel VBA 日期格式

    我有一个包含多个日期的电子表格 这些通常出现在mm dd yyyy or mm dd yyyy hh mm 问题是日期并不总是正确输入 我想进行检查以确保它们是代码中的日期 我最初的想法是使用IsDate检查或CDate但这似乎不起作用 它
  • 使用表单更新列表框中的查询对象。 (MS-Access)

    目标是创建一个查询表中定义为 活动 的所有对象的表单 该查询在表单上显示为列表框 我希望访问此表单的用户能够选择该查询的对象 然后通过从第二个列表框中选择操作来更新表 然后单击提交按钮 Visually 我认为单击时的 VBA 看起来像这样
  • 对通过 VBA 导入/链接的表禁用安全警告

    如何阻止通过导入表弹出此窗口DoCmd TransferSpreadsheet 我正在导入相当多的表 因此必须在弹出窗口中为每个表单击 打开 这很烦人 我试过了DoCmd SetWarnings False但这似乎不起作用 我知道也可以设置
  • 刷新电量查询VBA

    因此 我使用下面的代码来刷新我的查询连接 但是 如果由于 wtv 原因刷新失败 如何显示消息 因为此 VBA 显示刷新已完成 即使我的查询存在多个错误 Worksheets Details Unprotect Dim Connection
  • 使用VBA在网页中填写用户名和密码

    这是我第一次尝试通过 VBA 浏览 IE 浏览器 我在尝试着 转到此网页https hb2 bankleumi co il e Login html https hb2 bankleumi co il e Login html 填写用户名
  • excel vba范围单元格错误对象定义[重复]

    这个问题在这里已经有答案了 我一直在 Excel 中开发一个宏 该宏对一张工作表 次要 中的表格进行排序 当满足条件时 它应该将该表中的数据添加到第二张工作表 Sheet1 中的另一个表格中 但是我一直运行时出现 1004 错误 对象未定义
  • 选择或复制三个不相邻的单元格 3

    如何使用复制 3 个不相邻的单元格ActiveCell Row Range A ActiveCell Row C ActiveCell Row E ActiveCell Row Copy Update 欲了解更多信息 请遵循 https y
  • 在 Windows 服务中使用 OleDb 从 Excel 读取数据?

    免责声明 我知道这是一种不好的做事方式 这是我们与客户的唯一选择 Problem 我们需要每隔 x 时间从 Excel 文件读取数据 数据通过第三方 Excel 插件不断变化 应用程序的环境是 Windows XP SP1 和 Net 2
  • 切换发件人收件箱

    我目前使用的代码可以生成带有某些字段 例如 收件人 抄送 密件抄送 的电子邮件 但我不确定如何自动切换电子邮件的 发件人 部分 Ie my email is here but I want to automatically switch t
  • 为什么即使代码运行良好,VBA 也会显示“(未响应)”?

    我在许多不同的 VBA 程序中都遇到过这个问题 所以我想我可能在 Excel 或 VBA 编辑器中设置了一些不正确的设置 老实说 在网上搜索了很多之后我还是一无所知 基本上 我将运行一段正常的代码 并且应用程序 Excel 和 VBA 编辑

随机推荐