在 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 中将日期与字符串连接起来的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Power Bi 中将 Excel 数据与流分析数据连接起来