在vba excel中将数字拆分为时间块格式
我有这样的问题在vba excel中将数字拆分为时间块格式,excel,vba,Excel,Vba,我有这样的问题 0 500 100 1.8 500 800 50 1.6 800 2300 125 3.2 *我想要下面给出的格式(将数字拆分为时间块格式):* 00:00 05:00 -50 1800 00:00 05:00 -50 1800 05:00 08:00 -50 1600 08:00 23:00 -50 3200 08:00 23:00 -50 3200 08:00 23:00 -25 3200 代码如下所
0 500 100 1.8
500 800 50 1.6
800 2300 125 3.2
*我想要下面给出的格式(将数字拆分为时间块格式):*
00:00 05:00 -50 1800
00:00 05:00 -50 1800
05:00 08:00 -50 1600
08:00 23:00 -50 3200
08:00 23:00 -50 3200
08:00 23:00 -25 3200
代码如下所示:
Option Explicit
Sub main()
Dim data As Variant
Dim iData As Long, datum As Long, iRow As Long
On Error Resume Next
With Range("A2", Cells(Rows.Count, 1).End(xlUp))
data = .Resize(, 4).Value
iData = LBound(data)
Do
datum = data(iData, UBound(data, 2) - 1)
Do While datum > 0
iRow = iRow + 1
.Cells(iRow).Resize(, 4) = Application.Index(data, iData, 0)
.Cells(iRow).Offset(, 3).Value = .Cells(iRow).Offset(, 3).Value * 1000
.Cells(iRow, UBound(data, 2) - 1).Value = -WorksheetFunction.Min(50, datum)
datum = datum - 50
Loop
iData = iData + 1
Loop While iData <= UBound(data)
.Resize(1, 4).Copy
.Resize(iRow, 4).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End Sub
选项显式
副标题()
作为变量的Dim数据
尺寸和长度一样,基准面和长度一样,iRow和长度一样
出错时继续下一步
带范围(“A2”,单元格(行数,1)。结束(xlUp))
数据=.Resize(,4).Value
iData=LBound(数据)
做
数据=数据(iData,UBound(数据,2)-1)
当基准面>0时执行此操作
iRow=iRow+1
.Cells(iRow).Resize(,4)=应用程序.Index(数据,iData,0)
.Cells(iRow).Offset(,3).Value=.Cells(iRow).Offset(,3).Value*1000
.Cells(iRow,UBound(数据,2)-1).Value=-WorksheetFunction.Min(50,基准)
基准=基准-50
环
iData=iData+1
循环而iData抱歉,我没有看到excel不提供自己的方法将字符串转换为日期时间,但您可以这样做:
将第一行写入列的步骤
private Sub getColStr(in as String) as string
return in(0)+in(1)+":"+in(2)+in(3)
End Sub
最后两列应该很简单。请将您的代码放入code
标记中,并在需要时从新行开始。这很难理解。另外,我真的看不到输入和输出之间的关系,500
变成05:00
,100
变成-50
?您使用的是vb.net(作为vsto加载项)还是excel vba?先生,我使用的是excel vba,这是输入为500,输出应为05:00的要求。您当前的代码有哪些问题?什么错误?现在输出是什么?我无法找到此时间格式的逻辑。请帮助。如果您将要写入的时间转换为DateTime对象,则可以使用此方法: