在Excel中将日期与字符串连接

56

我在Excel中有两个单元格。一个单元格含有字符串,另一个单元格含有日期。我想把日期和字符串合并到第三个单元格中。例如:

A1 = "This "
A2 = "03/03/1982"

我想让A3成为:

This 03/03/1982

当我尝试将此公式放入A3单元格中:= A1 & A2它返回了一些奇怪的数字值,而不是给我字面意义上的日期。


2
你可以使用:=合并(文本(A1,"dd/mm/yyyy")," ",B1)。 - user2523670
1
使用24小时制:TEXT(A1,"dd/mm/yyyy hh:mm:ss") - Brian Duncan
6个回答

83

不知道是否为最佳方法,但我会这样做:

=A1 & TEXT(A2,"mm/dd/yyyy")

这将把你的日期格式化成所需的字符串。

编辑:你看到的那个有趣的数字是从1899年12月31日到你的日期之间的天数。这就是Excel存储日期的方式。


1
完整参考TEXT函数,特别是了解如何设置格式:请参阅此页面上有关日期和时间格式的指南http://office.microsoft.com/zh-cn/excel-help/text-function-HP010062580.aspx - codea

16

这是日期的数字表示形式。当你从像公式中引用日期时,就会得到这个东西。

你需要做的是:

= A1 & TEXT(A2, "mm/dd/yyyy")
这里最大的问题是格式说明符依赖于语言环境。如果使用不同本地化的 Excel 打开文件,则其将无法正常工作/产生意料之外的结果。
现在,你可以使用用户自定义函数:
public function AsDisplayed(byval c as range) as string
  AsDisplayed = c.Text
end function

然后

= A1 & AsDisplayed(A2)

然后在Excel中有一个错误(或特性?),因此在计算周期的某些阶段,.Text属性突然不可用,导致您的公式显示#VALUE而不是应有的值。

也就是说,无论哪种情况都不好。


这太蠢了(由微软提供)。更烦人的是,即使您将字段类型明确设置为“文本”,它仍然会输出此神奇数字,而不是您实际想要在单元格中显示的内容。 - Agneum
@starbyone 如果微软强制要求在串联上下文中使用某种特定的日期文本表示方式,那么这将是非常愚蠢的。同一个日期可以用几乎无限数量的方式来表示,& 运算符不应该决定选择“正确”的显示方式。文本类型确实可行,但您需要实际更改为文本值,而不仅仅是更改单元格格式。也就是说,先应用文本格式,然后粘贴日期作为文本值。然后,& 将保持原样(事实上它总是这样做的,只是这一次它将更加直观)。 - GSerg
我不明白为什么如果单元格的格式实际上是“文本”,我还需要将其粘贴为文本。如果以前有数字或日期值,它应该进行隐式转换。人们会期望一旦更改格式,该值将被表示为文本,这是很合理的。关于&运算符,我同意在连接日期值时它不应选择正确的显示方式(尽管在这种情况下,它可以尝试使用“DEFAULT”类型参数进行文本转换)。 - Agneum
我认为愚蠢的是没有一套标准化的格式可供选择。我使用的是瑞典版的Excel。TEXT(A1,"yyyy-mm-dd")根本不起作用。然而,TEXT(A1,"ÅÅÅÅ-MM-dd")却可以。如果能够像这样做些什么:TEXT(A1,DEFAULT)或者说,TEXT(A1,[ISO]yyyy-mm-dd),问题就解决了,而且这是一个简单的修复方法,不会破坏任何连接规则。 - Agneum
1
@starbyone 单元格的实际值始终与单元格格式无关。这非常重要,因为如果不是这种情况,那么所有公式都将变得不稳定,并且必须在 Excel 中的任何地方发生更改时重新计算,这将完全破坏性能。至于“TEXT”函数需要本地化参数的问题,是的,这是一个问题,我认为也是一种疏忽,已经提出了一个请求,即具有与语言环境无关的“TEXT”函数。 - GSerg

6
另外一种方法
=CONCATENATE("Age as of ", TEXT(TODAY(),"dd-mmm-yyyy"))

这将返回截至 2013 年 8 月 6 日的年龄。

3
感谢解决方案!
它有效,但在法语Excel环境下,您应该使用类似以下的内容:
TEXTE(F2;"jj/mm/aaaa")

为了在连接后保留F2单元格中显示的日期,请按原样保存日期。 此致敬礼。

请尝试阅读http://stackoverflow.com/about,以更好地了解SO上的问题/答案。您的贡献并不是回答问题,而是更像一条评论,您可以在增加声望后添加:http://stackoverflow.com/faq#reputation - Radim Köhler

2
您可以用以下简单的方法完成:

A1 = Mahi
A2 = NULL(空)

选择A2右键单击单元格 --> 格式化单元格 --> 改为文本

然后在A2中输入日期(如A2 = 31/07/1990)

然后进行连接即可。不需要任何公式。

=CONCATENATE(A1,A2)

mahi31/07/1990

(这适用于空单元格,即在输入日期值到单元格之前,您需要将其设置为文本)。


0
我发现对于这种情况,最简单的解决方案是为包含日期的单元格定义一个自定义数字格式。在这种情况下,格式应该是:
"This:" mm/dd/yyyy

设置此格式的步骤:

  1. 右键单击单元格
  2. 选择“格式单元格”
  3. 选择“数字”选项卡(默认情况下应该显示)
  4. 从类别列表中选择“自定义”
  5. 在“类型”字段中指定格式
  6. 按“确定”

注意:如果您真的想要从单元格中选择前面的文本,则此解决方案将无法按照描述的方式工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接