黛比的工作表中包含许多日期。为了将数据与日期连接起来,她必须编辑每个包含日期的单元格,并在日期之前添加撇号。她想知道是否有一种快速的方法来做到这一点。她尝试突出显示该行并将其设置为文本格式,但这没有用。

如果Debbie想要自动化她正在执行的手动工作,则可以使用宏来完成。以下内容将自动将所选单元格转换为文本,并将日期填充回该单元格。

Sub DateToText()

Dim cell As Range     Dim sTemp As String

For Each cell In Selection         With cell             sTemp = .Text             .NumberFormat = "@"

.Value2 = sTemp         End With     Next cell End Sub

在将文本填充回单元格时,请注意使用.Value2属性而不是.Value属性。这样做是为了确保Excel不会无意间将文本转换回日期值。它无论如何都不应该这样做,但是.Value2属性不支持Date数据类型,因此,从本质上讲,不排除任何可能的转换。

您还应该注意,宏将转换您选择的任何内容,即使它不包含日期。您需要确保在运行之前仅选择包含日期的单元格。

当然,做Debbie想要做的最简单的方法是使用TEXT工作表功能。例如,假设单元格A1包含一个日期。在另一个单元格中,您想在日期之前加上“最后期限是”。您可以使用以下公式来做到这一点:

="The deadline is " & TEXT(A1, "mmmm d, yyyy")

请注意,TEXT函数需要两个参数:要转换的单元格(在这种情况下为A1)和在转换中使用的模式(“ mmmm d,yyyy”)。如果单元格A1中包含日期6/25/16,则该公式将返回以下内容:

The deadline is June 25, 2016

您在引号内指定的模式非常接近于在定义单元格的自定义格式时使用的模式。例如,“ mmm”返回三个字符的月份名称,而“ mmmm”

返回一个完整的月份名称。您将在模式中使用的代码已在其他ExcelTips中进行了介绍,但您也可以在Wikipedia上找到方便地与Excel所使用的代码相对应的便捷代码摘要:

https://en.wikipedia.org/wiki/Date_format_by_country

关于此方法的有趣之处在于,单元格A1中的日期如何格式化并不重要。当您使用TEXT时,它依赖于Excel用于存储日期的基础序列号,然后根据您指定的模式对其进行格式化-与包含日期的单元格中的任何格式无关。

当然,如果您想直接转换为文本,则不必将任何内容与日期连接起来。在这种情况下,您只需要单独使用TEXT函数即可:

=TEXT(A1, "mmmm d, yyyy")

本质上,TEXT函数返回严格的文本值。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13450)适用于Microsoft Excel 2007、2010、2013和2016。