Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何搜索日期列值并替换为今天';excel中的日期_Excel_Vba_Excel Formula - Fatal编程技术网

如何搜索日期列值并替换为今天';excel中的日期

如何搜索日期列值并替换为今天';excel中的日期,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有一个excel文件,列名为“取货时间”,日期和时间不同(可能是字符串或日期格式) 现在我只想用今天的日期替换该列中的日期,并保留时间,我如何才能做到这一点?预期结果如下所示: 17/Jan/2019 10:00:00 PM 17/Jan/2019 06:01:00 AM 17/Jan/2019 08:00:00 PM 17/Jan/2019 04:01:00 AM 17/Jan/2019 06:00:00 AM 17/Jan/2019 02:01:00 PM 17/Jan/2019 09:0

我有一个excel文件,列名为“取货时间”,日期和时间不同(可能是字符串或日期格式)

现在我只想用今天的日期替换该列中的日期,并保留时间,我如何才能做到这一点?预期结果如下所示:

17/Jan/2019 10:00:00 PM
17/Jan/2019 06:01:00 AM
17/Jan/2019 08:00:00 PM
17/Jan/2019 04:01:00 AM
17/Jan/2019 06:00:00 AM
17/Jan/2019 02:01:00 PM
17/Jan/2019 09:00:00 PM
17/Jan/2019 05:01:00 AM
17/Jan/2019 04:00:00 PM
17/Jan/2019 12:01:00 AM
17/Jan/2019 05:00:00 PM
17/Jan/2019 01:01:00 AM
17/Jan/2019 07:30:00 PM
17/Jan/2019 03:31:00 AM
17/Jan/2019 08:20:00 PM
17/Jan/2019 04:21:00 AM
17/Jan/2019 10:00:00 PM
已经研究过查找和vlookup,但似乎没有达到这个目的。
多谢各位

这似乎奏效了:

=TODAY() + TIME(HOUR(A1),MINUTE(A1),SECOND(A1))
Option Explicit

Public Sub changeDates()

    Dim cel As Range
    Dim rng As Range
    Dim cellTime As Variant

    Set rng = Sheet1.Range("A1:A" & Sheet1.Range("A1").End(xlDown).Row)

    For Each cel In rng.Cells

        cellTime = Format(TimeValue(cel), "hh:mm")
        cel.Value = Format(Date, "d/mmm/yyyy") + " " + cellTime

    Next cel

End Sub

这似乎在起作用:

Option Explicit

Public Sub changeDates()

    Dim cel As Range
    Dim rng As Range
    Dim cellTime As Variant

    Set rng = Sheet1.Range("A1:A" & Sheet1.Range("A1").End(xlDown).Row)

    For Each cel In rng.Cells

        cellTime = Format(TimeValue(cel), "hh:mm")
        cel.Value = Format(Date, "d/mmm/yyyy") + " " + cellTime

    Next cel

End Sub


所以你必须放在另一列上,然后向下拖动格式并复制粘贴值?我们可以在某个地方单击一个按钮并更改该列上的所有值吗?您可以学习如何使用宏。它可以记录你所做的事情并通过单击按钮重复。如何编写该宏,请给出一个示例?
=A1-INT(A1)+TODAY()
=TODAY()+MOD(A1;1)
工作too@Joubarc:第一个不是返回日期时间,而是一个奇怪的数字(例如4348391667),第二个是work,只是需要使用逗号,比如:=TODAY()+MOD(A1,1)。Tks,很高兴知道更多!所以你必须放在另一列上,然后向下拖动格式并复制粘贴值?我们可以在某个地方单击一个按钮并更改该列上的所有值吗?您可以学习如何使用宏。它可以记录你所做的事情并通过单击按钮重复。如何编写该宏,请给出一个示例?
=A1-INT(A1)+TODAY()
=TODAY()+MOD(A1;1)
工作too@Joubarc:第一个不是返回日期时间,而是一个奇怪的数字(例如4348391667),第二个是work,只是需要使用逗号,比如:=TODAY()+MOD(A1,1)。Tks,很高兴知道更多!我将Set rng更改为我的表格范围:Set rng=Sheet1.range(“F2:F”和Sheet1.range(“F2”).End(xlDown).Row),然后我得到了运行时错误,并单击debug它指向此行:cellTime=Format(时间值(cel),“hh:mm”)。请参考我上传到ufile的以下评论中的截图。我不太了解如何设置范围,我的目的是搜索所有列单元格(但第一个单元格应该是列名)。我尝试将:Dim cellTime更改为日期,但该行没有错误,但下一行是:cel.Value=格式(日期,…但无法将Dim cel更改为日期,因为要在循环中使用它,它必须是一个对象。看起来我可以通过添加错误处理来修复该错误:Dim obj as Object Set obj=应用程序。如果TypeName(obj)“Range”然后,如果Dim cel作为Range Set cel=obj退出Sub End;但是代码运行但从不更新值。我也看不到您代码中的任何地方将日期更新为今天的日期?我将答案放在上面,这是我根据您的答案更改的代码,然后执行时没有错误,但是,没有更改或更新值。figu可以吗您知道原因吗?我发现您的范围选择在这两行之间的空白单元格中不起作用。我将Set rng更改为我的表格范围:Set rng=Sheet1.range(“F2:F”和Sheet1.range(“F2”).End(xlDown).Row),然后我得到运行时错误并单击debug,它指向这一行:cellTime=Format(TimeValue(cel),“hh:mm”)。请参阅我上传到ufile上的以下评论中的屏幕截图。我不太了解如何设置该范围,我的目的是搜索所有列单元格(但第一个单元格应为列名)。我已尝试更改:Dim cellTime as Date,则该行没有错误,但下一行是:cel.Value=Format(日期,…但无法将Dim cel更改为日期,因为要在循环中使用,它需要是一个对象。看起来我可以通过添加错误处理来修复该错误:Dim obj As Object Set obj=Application.Selection If TypeName(obj)“Range”然后,如果Dim cel作为Range Set cel=obj退出Sub End;但是代码运行但从不更新值。我也看不到您代码中的任何地方将日期更新为今天的日期?我将答案放在上面,这是我根据您的答案更改的代码,然后执行时没有错误,但是,没有更改或更新值。figu可以吗你知道为什么吗?我发现你的范围选择在空白单元格之间不起作用