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

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

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

我希望 A3 是:

This 03/03/1982

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

【问题讨论】:

标签: excel worksheet-function


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案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 单元格中显示的日期。 最好的问候

    【讨论】:

    【解决方案5】:

    你可以这样做:

    A1 = Mahi
    A2 = NULL(空白)

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

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

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

    =连接(A1,A2)

    mahi31/07/1990

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

    【讨论】:

      【解决方案6】:

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

      "This:" mm/dd/yyyy
      

      要设置这种格式:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2020-06-11
        • 2014-08-30
        • 2020-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多