【问题标题】:Convert all rows in a column with date format to text format将具有日期格式的列中的所有行转换为文本格式
【发布时间】:2020-02-06 09:49:13
【问题描述】:

我需要将带有日期的列转换为日期格式,如果可能的话,将其转换为文本格式。 我可以应用工作表函数 TEXT,通过复制粘贴或双击填写,然后复制/剪切帮助列并粘贴为原始列中的值并记录宏,但是有什么办法吗所以在这个例子中没有选择/激活、自动填充、使用辅助列(如“H”和“I”)?任何 vba 函数代替工作表函数会提高效率吗?

Sub DateFormatToText()
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""dd/mm/yyyy"")"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H20")
End Sub

浏览,我开始知道那些不是最佳代码。

【问题讨论】:

  • 您已将该问题标记为 VBA,因此请发布您尝试过的代码。请参阅 How to create a Minimal, Complete, and Verifiable example。另外,您已经将日期格式转换为文本格式,如果可能的话,可以反向,所以您的公式应该是=TEXT(A1;"yyyy/mm/dd")

标签: excel vba date text autofill


【解决方案1】:

您可以尝试如下:

Range("H2:H" & Range("G" & Rows.Count).End(xlUp).Row).Formula = "=TEXT(G2,""dd/mm/yyyy"")"

【讨论】:

  • 先生,非常感谢。在本例中是否可以不使用辅助列(如“H”和“I”),并使用一些 VBA 函数代替 Worksheet Function ?
  • @Biswajit,我不确定我是否理解您的要求。不可能将两个结果都放在一个列中(H 列和 I 列)。目标到底是什么?
  • @shrivallabha.redij 我认为OP意味着将G列的值直接更改为文本。可能每个单元格中的一个循环都会做到这一点。无论如何,赞成你的答案。
  • 先生,代码显示运行时错误 1004(应用程序定义或对象定义错误)。我尝试将其更改为 ActiveSheet.Range("H2:H" & Range("G" & Rows.Count).End(xlUp).Row).Formula = Application.WorksheetFunction.Text(G2, "dd/mm/yyyy ") 但随后将每行的结果显示为 00/01/1900。此外,是否可以直接将 G 列转换为文本格式,而无需先更改 H 列。您的回答解决了我的问题,但我只想知道这是否可能。我实际上不需要在另一列中更改值。
  • @Biswajit,我的错误是代码中有错字。我现在已经修好了。对于: Foxfire 和 Burns 烧伤:了解。但由于他提到了两列的输出,我感到很困惑。
【解决方案2】:

没有辅助列,没有工作表公式

要更改同一列中的日期条目,例如:

Option Explicit
Sub colGtoText()
    Dim v, i As Long, r As Range, ws As Worksheet

'define the working area of Column G entries  
Set ws = ThisWorkbook.Worksheets("sheet1")
With ws
    Set r = .Range(.Cells(1, "G"), .Cells(.Rows.Count, "G").End(xlUp))
    v = r.Value 'read into vba array for faster processing
End With

With r
    .NumberFormat = "@" 'change to text format

    'process each entry to the appropriately formatted text string
    For i = 1 To UBound(v)
        If IsDate(v(i, 1)) Then v(i, 1) = Format(v(i, 1), "mm/dd/yyyy")
    Next i

    'write results back to the range from the vba array
    .Value = v
End With

End Sub

【讨论】:

    【解决方案3】:
    =TEXT(G2,"dd-mm-yyyy")
    

    使用 - 操作或者使用替换功能

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      相关资源
      最近更新 更多