将带小数分隔符的时间转换为军事时间并复制到不同的工作表(VBA)

时间:2013-10-11 19:06:27

标签: excel vba excel-vba

我必须输入很多循环时间并且必须使用“:”inbetween很糟糕。此信息正在minitab中使用,因此输入的格式很糟糕。我必须在sheet1上查看26列以输入16个数据单元格。我没有每次滚动,而是在一个列中创建了一个单独的表单(2),其中16个数据单元格,所以我只能在数字键盘上输入数据。格式是hh.mm.宏然后替换“。”用“:”将其复制到适当位置的sheet1中。其他一切正常,但是当输入hh.m0时,它被转换为hh.0m ex。 (15.30在宏运行后变为15:03)虽然15.34是宏之后的15:34。如果没有零,代码工作正常。大部分代码如下。下午和我工作正常,但填写它的人没有把上午和下午放在工作表上,所以我们现在正在使用军事。我对完全不同的代码持开放态度,但这是我能想到的。

谢谢

Set w1 = Sheets("Data Collection Sheet").Cells
Set w2 = Sheets("Sheet1").Cells

For x = 8 To 15
Cells(x, 2).Activate
Cells(x, 2).Replace what:=".", replacement:=":"
'Cells(x, 2).Replace what:="p", replacement:=" pm"
'Cells(x, 2).Replace what:="o", replacement:=" am"


Next x 
w1(9, 3).Value = w2(9, 2).Value
'  I go on to make other cells the same value but this should give an idea

2 个答案:

答案 0 :(得分:0)

尝试使用TimeValue函数:

a = TimeValue("15.30")

如果“15.3”是您遇到的问题,您可以在TimeValue语句之前检查并更改:

a = 15.3 'the initial value
b = a - Int(a) 'b = the fractional part
c = (b * 10) - Int(b * 10) 'c = the 2nd digit out of
'the fractional part

If c > 0 Then 'something like mm.d has been
'put in instead of mm.dd

答案 1 :(得分:0)

使用代码的替代方法是使用公式:

=TIME(INT(A1),(A1-INT(A1))*100,0)

小数点左边的数字给你一小时。小数和后面跟踪的任何内容都会给出分钟数,然后乘以100得到整数值。秒= 0。

我认为由于排除了小数,会议记录给你一个问题。 0.03将为您03提供30.30 3还会为0.3 = 0.30 = 0.300 = 0.30000提供{{1}},等等。