如何让 Excel 保存显示的日期字段

如何让 Excel 保存显示的日期字段

我有一些包含日期时间值的数据,需要将其转换为其他格式。我创建了一个 Excel 公式,可以将字符串连接成我需要的格式。我目前将包含公式的列格式化为 TEXT。

但是,当我将数据保存到 CSV 文件时,Excel 坚持将时间部分从 20:22 更改为晚上 8:22。

我怎样才能将其保存到显示的 CSV 文件中?

答案1

遗憾的是,Excel 对 CSV 的处理一直很差。

普遍接受的解决方案是使用 VBA 代码自己创建 CSV 文件。这样,您就可以按照自己的意愿格式化内容,并且可以避免 Excel 所做的相当愚蠢的事情,即使字段周围的引号可选,有时会出错。互联网上有许多创建 CSV 文件的合理示例,还有几个提供等效工具的插件。

以下是一些可以帮助您入门的简单代码:

' Output a more consistant CSV file
Public Sub OutputQuotedCSV()
    Const QSTR As String = """"
    Dim myRecord As Range
    Dim myField As Range
    Dim vFilename As Variant
    Dim nFileNum As Long
    Dim sOut As String

    'Get a filename to save as
    vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft CSV files,*.csv", _
    title:="Save as CSV with fields in double quotes")

    If vFilename = False Then Exit Sub 'User chose Cancel

    nFileNum = FreeFile
    Open vFilename For Output As #nFileNum
    For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
        With myRecord
            For Each myField In Range(.Cells(1), Cells(.Row, 256).End(xlToLeft))
                sOut = sOut & "," & QSTR & _
                Replace(myField.Text, QSTR, QSTR & QSTR) & QSTR
            Next myField
            Print #nFileNum, Mid(sOut, 2)
            sOut = Empty
        End With
    Next myRecord
    Close #nFileNum
End Sub

您需要在其中添加日期测试并进行相应的格式化。

答案2

在我的 Excel 2007 中,它确实保留了所需的格式,但如果有必要,A1按如下方式“转换”实际存储的时间(即 20:22 的转换时间为 0.848611)可能会有效 [我无法完全测试,因为我没有看到您所看到的症状!]:

=IF(HOUR(A1)<10,"0"&HOUR(A1)&":"&MINUTE(A1),HOUR(A1)&":"&MINUTE(A1))

相关内容