我正在将值从一张表拉到另一张表。表 1 有ticket ID
,表 2 有与 相关的各种值ticket ID
。我正在表 2 上查找匹配项ticket ID
,并将与之相关的多个值拉到ticket ID
表 1 上。
问题
Sheet 2 包含一些日期和时间格式的值 ( YYYY/MM/DD HH:MM:SS )。该公式将日期时间值返回为数字,例如42010.4
,而不是原始值。
如何让日期时间值以其原始格式显示?
我如何提取值的细节与我的问题无关。但仅供参考:
我正在使用 MATCH 函数在 Sheet 2 上找到正确的行,并将其存储在 Sheet 1 的 C 列中ticket ID
。
然后使用该结果将 Sheet 2 中的值填充到同一行中的多个单元格。例如,使用类似以下公式填充 Sheet 2 B 列中的值:
=IF($C2>0,INDIRECT("'Sheet2'!B"&C2),"")
上述公式有效,并从适当的单元格返回值。但是,这不是一个简单的单元格引用。相反,这是一个有点复杂的公式,并且不清楚如何让结果像源一样显示。
答案1
这个问题是由另一个问题(处理本文开头描述的任务)。该问题的可接受答案提供了两种解决方案,一种是将第二张工作表中的值拉到单独的单元格中,另一种是将第二张工作表中的所有值连接到单个单元格中。第二张工作表中的某些单元格包含日期时间,这对两种方法都存在问题,并且这两种情况的修复方法不同。我将描述这两种情况。
怎么了
存储的日期时间以“原始”未格式化的形式复制。例如,2015 年 1 月 6 日上午 8:55:08 存储为 42010.3716,因为这是自 1899 年 12 月 31 日(标准参考日期)以来的第 42,010 天,而上午 8:55:08 是一天的 37.16%。日期时间以该形式的单个数字存储在单元格中,然后 Excel 根据需要从中得出年、月、日和时间信息,以所需格式显示值。
将值复制到单独的单元格中
这是最简单的解决方法。在这种情况下,看到原始日期时间实际上是一件好事,因为这意味着日期时间信息已被保留并可以使用(您可以使用该值进行日期时间测试、日期时间算术等)。你只需要格式化它。
一种方法是从原始单元格复制格式。使用复制,然后在新单元格中,仅粘贴特殊格式。您可以通过右键单击单元格并使用上下文菜单或从顶部的功能区菜单访问此功能。
另一种方法是使用自定义格式,特别是当您想对复制的值使用略有不同的格式时。对于新单元格,可以通过右键单击单元格或从功能区菜单访问单元格格式对话框。从格式类型列表中选择自定义格式。您可以从显示的特殊格式列表中选择一些接近的格式作为起点,或者只需在编辑窗口中输入所需的代码。
完整的格式代码列表可以在这里找到这里。要复制问题中描述的格式,代码如下:
Yyyy/Mm/Dd Hh:mm:ss
然后细胞就会看起来和原来一样。
值连接到单个单元格
在这种情况下,嵌入的值已被视为文本,因此它已失去其作为可用日期时间的值。这只是一个让它在字符串中显示为可读日期时间的问题。这可以通过在构造字符串时使用 TEXT 函数格式化值来实现。我将借用另一个问题中的一些代码作为此解决方案的基础:
=IF($C2>0,INDIRECT("'tickets_info'!B" & $C2)
& " " & INDIRECT("'tickets_info'!C" & $C2)
...
& " " & INDIRECT("'tickets_info'!N" & $C2),"")
这里,C2 是查找匹配行的查找值,而 & 用于将各个源单元格连接成一个字符串,其中包含匹配票证的所有信息。假设 C 列tickets_info
是日期时间。创建此字符串后,字符串中的该位置将显示原始日期时间值,而不是 中显示的格式化值tickets_info
。
您可以使用 TEXT 函数来格式化该值。TEXT 函数使用的代码与单元格的自定义格式代码非常相似。代码和迷你教程可以在这里找到这里对于问题中描述的格式,结果将如下所示:
=IF($C2>0,INDIRECT("'tickets_info'!B" & $C2)
& " " & TEXT(INDIRECT("'tickets_info'!C" & $C2),"yyyy/mm/dd hh:mm:ss")
...
& " " & INDIRECT("'tickets_info'!N" & $C2),"")
TEXT 函数仅应用于派生的单元格引用(INDIRECT 函数的结果)。
答案2
选择日期列,右键单击,设置单元格格式,选择所需的格式,然后单击“确定”。大功告成。很简单。