我有无限的行,并指定了一个列来定义日期和时间,如下所示'General Format'“2016.08.10 06:00:00.066”。我知道您无法转换此列中的每个单元格“mm / dd / yyyy hh:mm:ss.000 AM / PM”。因此,我将单个列分配给“mm / dd / yyyy”,将另一列分配给“hh:mm:ss.000 AM / PM”。目前时间也落后了6个小时,所以我想增加6个小时。 我正在努力解决这个问题,因为虽然单元格是一般的或文本格式,但时间和日期显示为“yyyy.mm.dd hh:mm:ss.000”。并且找不到以这种格式拆分两种方法的方法 任何帮助表示赞赏
答案 0 :(得分:1)
要将文本转换为Excel将更改为数据/时间的格式,请使用以下命令:
=--SUBSTITUTE(SUBSTITUTE(A1,".","/",1),".","/",1)
然后添加6小时,您将使用:
+ TIME(6,0,0)
所以要获得日期/时间是:
=--SUBSTITUTE(SUBSTITUTE(A1,".","/",1),".","/",1) + TIME(6,0,0)
然后简单地格式化新单元格:
mm/dd/yyyy hh:mm:ss.000 AM/PM
您也可以将其拆分为日期和时间:
日期:
=INT(--SUBSTITUTE(SUBSTITUTE(A1,".","/",1),".","/",1) + TIME(6,0,0))
格式化mm/dd/yyyy
时间:
=MOD(--SUBSTITUTE(SUBSTITUTE(A1,".","/",1),".","/",1) + TIME(6,0,0)),1)
格式化hh:mm:ss.000 AM/PM
答案 1 :(得分:0)
使用text:= concatenate(text(a1,“MM”),text(a1,“DD”),text(a1,“YYYY”)对其他列执行相同操作= concatenate(text(a1,“ HH “),文本(A1,” MM “),文本(A1,” SS“)
答案 2 :(得分:0)
如果您尝试使用日期时间格式,那么Excel将会缩短毫秒数,这很奇怪。
Enum DTValues
ReturnDate
ReturnTime
ReturnDateTime
End Enum
Function getDateTime(yyyymmdd_hh_mm_ss_000 As String, ReturnValue As DTValues) As Single
Dim arr
Dim mSecs As Single
yyyymmdd_hh_mm_ss_000 = Replace(yyyymmdd_hh_mm_ss_000, " ", ".")
yyyymmdd_hh_mm_ss_000 = Replace(yyyymmdd_hh_mm_ss_000, ":", ".")
arr = Split(yyyymmdd_hh_mm_ss_000, ".")
mSecs = arr(6) / 24 / 60 / 60 / 100
Select Case ReturnValue
Case ReturnDate
getDateTime = CSng(DateSerial(arr(0), arr(1), arr(2)))
Case ReturnTime
getDateTime = CSng(TimeSerial(arr(3), arr(4), arr(5))) + mSecs
Case ReturnDateTime
getDateTime = CSng(DateSerial(arr(0), arr(1), arr(2))) + CSng(TimeSerial(arr(3), arr(4), arr(5))) + mSecs
End Select
End Function
Sub ProcessDates()
Const WORKSHEET_NAME = "Sheet1"
Const FIRST_ROW = 2
Const SOURE_COLUMN = 1
Const DATE_COLUMN = 2
Const TIME_COLUMN = 3
Dim Target As Range
Dim arDate, arTime
Dim y As Long
With Worksheets(WORKSHEET_NAME)
Set Target = .Range(.Cells(FIRST_ROW, SOURE_COLUMN), .Cells(Rows.Count, SOURE_COLUMN).End(xlUp))
End With
arDate = Target.Value
arTime = Target.Value
For y = 1 To UBound(arDate)
arDate(y) = getDateTime(arDate(y), ReturnDate)
arTime(y) = getDateTime(arTime(y), ReturnTime)
Next
Target.EntireRow.Columns(DATE_COLUMN).Value = arDate
Target.EntireRow.Columns(TIME_COLUMN).Value = arTime
End Sub