【发布时间】:2017-02-22 18:42:32
【问题描述】:
我有问题,像这样
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
任何帮助将不胜感激。
【问题讨论】:
-
请将您的代码放在
code标签中,并在需要时在新行开始。这很难阅读。另外,我并没有真正看到您的输入和输出之间的关系,500变为05:00和100变为-50?你使用 vb.net(作为 vsto 插件)还是 excel vba? -
先生,我正在使用 excel vba,这是输入为 500 且输出应为 05:00 的要求
-
您当前的代码有什么问题?什么错误?现在的输出是什么?
-
我找不到这种时间格式的逻辑请帮忙..
-
如果您将要写入的时间转换为 DateTime 对象,则可以使用这种方法:stackoverflow.com/questions/5457069/…