我现在有一个问题很长一段时间..我一直试图找到日期之间的一些差异,并在几分钟内打印结果。但是,我的问题是,即使我添加了一行代码将单元格格式转换为日期格式dd / mm / yyyy,它也不适用于单元格,但仅适用于其中的一部分。此外,对某些人来说,它适用,但它会创建日期格式mm / dd / yyyy。我真的不该做什么。这些日期是来自另一张表的vlookup。所以,我甚至写了一行代码来将它们转换成原始的表格。所以,总而言之,我确实做了两次转换。我的代码如下!请帮帮我:)。
Sheets("TMS").Select
lastrow = Range("B" & Rows.Count).End(xlUp).Row
With Range("K2:K" & lastrow)
If Not IsEmpty(Range("K2:K" & lastrow)) Then
.NumberFormat = "mm/dd/yyyy hh:mm"
End If
End With
Sheets("TheTracker").Select
lastrow = Range("B" & Rows.Count).End(xlUp).Row
With Range("AO2:AO" & lastrow)
.Formula = "=VLOOKUP(B2,TMS!B:K,10,FALSE)"
.NumberFormat = "mm/dd/yyyy hh:mm"
.Value = .Value
End With
答案 0 :(得分:1)
尝试更好地引用范围,而不使用Select
,参考您需要的工作表,并忽略hh:mm
。这样的事情可能会起作用:
Public Sub Test()
Dim lastRow As Long
With Worksheets("TMS")
lastRow = .Range("B" & .rows.Count).End(xlUp).Row
.Range("K2:K" & lastRow).NumberFormat = "mm/dd/yyyy"
End With
With Worksheets("TheTracker")
lastRow = .Range("B" & .rows.Count).End(xlUp).Row
With .Range("AO2:AO" & lastRow)
.Formula = "=VLOOKUP(B2,TMS!B:K,10,FALSE)"
.NumberFormat = "mm/dd/yyyy"
.value = .value
End With
End With
End Sub
答案 1 :(得分:1)
如果日期格式仅应用于少数单元格,则看起来与计算机的区域设置和日期格式不相交。
如果您将计算机设置为将日期显示为DMY,则日期为
1/1/2017
将成为真实日期 - 1月1日12/7/2017
将是一个真实的日期 - 7月12日13/7/2017
将是一个真实的日期 - 7月13日但是
7/13/2017
将不是日期,因为日期和月份的顺序是错误的。具有区域设置的计算机同样适用于将日期显示为MDY,在美国很受欢迎。
1/1/2017
将成为真实日期 - 1月1日12/7/2017
将成为真实日期 - 12月7日13/7/2017
不会是真正的约会对象 - 因为没有第13个月。因此,请检查源数据的显示格式:DMY或MDY?
然后根据计算机的区域设置调整您的VBA例程以拉出月份和日期。
答案 2 :(得分:0)
如果您将日期作为文本而Excel将不会将其视为日期,您可以尝试这样的事情。
Columns("K:K").Select
Selection.TextToColumns Destination:=Range("K1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True
ActiveSheet.Range("K2").Select
答案 3 :(得分:0)
我猜这些数据来自你OPEN
' d的CSV文件。
如果是这种情况,最好再做IMPORT
(通常在DATA
功能区上)。
执行此操作时,Text Import Wizard
将打开,您可以指定传入数据的日期格式。
IMPORT
进程。