如何解决在 Excel VBA 中连接日期后无法更改格式
我将日期格式化为文本。我想将这些日期的格式从 “dd.mm.yyyy hh:mm”到“yyyy.mm.dd”。 (例如“04.05.2020 10:33”到“2020.05.04”)我使用以下代码(原始日期在“K”列中):
Dim cell As Range
For Each cell In Range(Range("K2"),Range("K2").End(xlDown))
cell.Offset(0,7).Value = Mid(cell.Value,7,4) & "." & Mid(cell.Value,4,3) & Left(cell.Value,2)
Next
新创建的日期无法格式化,所以当我尝试对它们使用 vlookup 函数时,该函数失败,说它在查找表中找不到值。 (日期在查找表中是可以的)
我需要手动输入每个单元格并按回车键,然后excel 才会开始识别格式。 我还发现,如果我像这样使用excel的手动“替换”功能:https://i.stack.imgur.com/U3k5e.png,并将点替换为点,excel将再次开始识别格式,但是当它无法识别任何格式时我使用以下代码:
Range(Range("R2"),Range("R2").End(xlDown)).Replace What:=".",Replacement:=",",LookAt:=xlPart,SearchOrder:=xlByRows,MatchCase:=False,SearchFormat:=False,ReplaceFormat:=False,FormulaVersion:=xlReplaceFormula2
有人可以帮忙吗?如何在 vba 中转换这些连接值的格式,以便 vlookup 能够识别它们?
谢谢!
解决方法
试试这个:
cell.Offset(0,7).Value = Format(Mid(cell.Value,7,4) & " " & Mid(cell.Value,4,3) & " " & Left(cell.Value,2),"yyyy.mm.dd")
末尾的 yyyy.mm.dd
告诉它您希望它如何格式化。您还需要在 3 个函数之间使用空格或斜杠 (/),因为它无法将句点识别为它的分隔符。
例如格式化月份。以一月为例:
m
= 1
mm
= 01
mmm
= 简
mmmm
= 一月
编辑:
当时我能看到真正做到的唯一方法是:
Dim cell as range
For Each Cell in Range(Range("K2"),Range("K2").End(xlDown))
Cell.Value = Format(Replace(Cell.Value,".","/"),"yyyy.mm.dd")
Next
,
将日期和时间作为字符串转换为日期
Option Explicit
Sub createDate()
Dim Data As Variant
Dim currString As String
Dim currDate As Date
Dim i As Long
With Range(Range("K2"),Range("K2").End(xlDown))
Data = .Value
For i = 1 To UBound(Data,1)
currString = Data(i,1)
currDate = DateSerial(CLng(Mid(currString,4)),_
CLng(Mid(currString,2)),CLng(Left(currString,2)))
Data(i,1) = currDate
Next i
With .Offset(,7)
.Value = Data
.NumberFormat = "yyyy.mm.dd"
'.Columns.AutoFit
End With
End With
End Sub
,
我最终使用了以下代码:
doctrine:
dbal:
driver: 'pdo_mysql'
server_version: '5.5.68-MariaDB'
charset: utf8mb4
host: '%env(DATABASE_HOST)%'
port: '%env(DATABASE_PORT)%'
user: '%env(DATABASE_USER)%'
password: '%env(DATABASE_PWD)%'
dbname: '%env(DATABASE_NAME)%'
url: '%env(resolve:DATABASE_URL)%'
原来我只需要使用斜杠来分隔连接的部分,这让我可以自由更改新创建日期的格式。
特别感谢 Simon,他的回答很有帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。