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

Posted

技术标签:

【中文标题】在 Excel 中将日期与字符串连接起来【英文标题】:Concatenating date with a string in Excel 【发布时间】:2011-06-13 21:21:08 【问题描述】:

我在 Excel 中有两个单元格。一个有字符串,另一个有日期。在第三个单元格中,我想将日期和字符串放在一起。例如:

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

我希望 A3 是:

This 03/03/1982

当我尝试将其放入 A3 公式中时:= A1 & A2 它会返回一些有趣的日期数值,并且不会给我文字日期。

【问题讨论】:

你可以使用:=concatenate(Text(A1,"dd/mm/yyyy")," ",B1)。 How to concatenate string with DATE()?的可能重复 24 小时制:TEXT(A1,"dd/mm/yyyy hh:mm:ss") 【参考方案1】:

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

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

这应该将您的日期格式化为您想要的字符串。

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

【讨论】:

完整参考 TEXT 函数,尤其是了解如何设置格式:请参阅本页日期和时间格式指南office.microsoft.com/en-us/excel-help/…【参考方案2】:

这是日期的数字表示。当你从这样的公式中引用日期时,你会得到什么。

你必须这样做:

= 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 属性突然变为not available,并且您的公式显示#VALUE 而不是它们应该显示的。

也就是说,无论哪种方式都不好。

【讨论】:

这太愚蠢了(微软)。更烦人的部分是,即使您将字段类型专门设置为“文本”,它仍然会吐出这个幻数,而不是您在单元格中真正想要的。 @starbyone 如果在连接上下文中强制使用日期值的某种文本表示,那么微软会很多愚蠢。相同的日期可以以几乎无限种方式表示,& 操作员不应该选择“正确”的显示方式。文本类型确实有效,但您需要将值实际更改为文本,而不仅仅是更改单元格格式。也就是说,首先应用文本格式,然后粘贴日期文本值。然后& 将保持原样(实际上它总是这样做,只是这次它会更直观)。 (1/2) 如果单元格上的格式字面上是“文本”,我不明白为什么我必须将其粘贴为文本。如果之前有一个数字或日期值,它应该进行隐式转换/转换。人们会期望在您更改格式后立即将值表示为文本,这是合乎逻辑的。关于 & 运算符,我同意它不应该在连接日期值时选择正确的显示方式(尽管在这种情况下它可以尝试使用“DEFAULT”类型参数进行文本转换。..(继续下一条评论) (2/2) 没有一套标准格式可供选择,这让我觉得很愚蠢。我有瑞典版的 Excel。 TEXT(A1,"yyyy-mm-dd") 根本不起作用。但是,TEXT(A1,"ÅÅÅÅ-MM-dd") 可以。如果可以执行以下操作,这很容易解决:TEXT(A1,DEFAULT) 或者说,TEXT(A1,[ISO]yyyy-mm-dd)。问题解决了,而且很容易解决,不会破坏任何连接规则。 @starbyone 单元格的实际值一直是单元格格式中的decoupled。这非常重要,因为如果不是这种情况,那么所有公式都会变得不稳定,并且每次在 Excel 中的任何地方发生任何事情时都必须重新计算,这将完全破坏性能。至于 TEXT 函数需要本地化参数的问题,是的,这是一个问题,IMO 忽略了一个问题,并且已经提出了对与语言环境无关的 TEXT 函数的请求。【参考方案3】:

另一种方法

=CONCATENATE("Age as of ", TEXT(TODAY(),"dd-mmm-yyyy"))

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

【讨论】:

【参考方案4】:

感谢您的解决方案!

它有效,但在法语 Excel 环境中,您应该应用类似的东西

TEXTE(F2;"jj/mm/aaaa")

在连接后获取在 F2 单元格中显示的日期。 最好的问候

【讨论】:

请尝试阅读此***.com/about,以进一步了解此处关于 SO 的问题/答案。您的贡献没有回答问题。它更像是一条评论,您可以在提高声誉后添加:***.com/faq#reputation【参考方案5】:

你可以这样做:

A1 = MahiA2 = NULL(空白)

选择A2右击单元格-->格式化单元格-->改为TEXT

然后将日期放入 A2 (A2 =31/07/1990)

然后连接它会起作用。不需要任何公式。

=连接(A1,A2)

mahi31/07/1990

(这适用于空单元格,即,在将 DATE 值输入到单元格之前,您需要将其设为 TEXT)。

【讨论】:

【参考方案6】:

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

"This:" mm/dd/yyyy

要设置这种格式:

    右键单击单元格 选择单元格格式 选择数字选项卡(应该默认显示) 从类别列表中选择自定义 在“类型”字段中指定格式 按确定

注意:如果您确实希望从单元格中选择前面的文本,则此解决方案将无法按描述工作。

【讨论】:

以上是关于在 Excel 中将日期与字符串连接起来的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Excel 中将单元格值与新行连接起来?

如何在 Power Bi 中将 Excel 数据与流分析数据连接起来

如何在Jmeter中将“嵌套”变量与字符串连接起来

如何在 spark sql 连接条件中将字符串数据类型转换为日期:to_date 不起作用并且转换抛出错误

如何在MySQL中连接两个字符串

如何在EXCEL中将字符转成日期 如19970828转成1997-08-28