Excel公式,用于将单元格中经过的hh.mm时间转换为同一单元格中的hh

Excel公式,用于将单元格中经过的hh.mm时间转换为同一单元格中的hh,excel,excel-formula,Excel,Excel Formula,在E列中,我以hh.mm的格式放置经过的时间。请注意句号分隔符,而不是冒号。我需要保留从句点到左边的所有内容,但将分钟转换为百分之一小时用于时间跟踪,并将结果保留在同一单元格中 我有一个excel表格,可以将每一分钟的时间映射到相应的第一百个小时,因此可以执行某种查找,或者可以使用从头开始计算的公式。我知道公式=(“hh:mm”*24)会将小时/分钟转换为小时/百分之一,但我很难将其转换为我的用例。我可能会使用RIGHT功能获取我的分钟数并将其转换,但我如何维护从左周期开始的所有内容,无论是一个

在E列中,我以hh.mm的格式放置经过的时间。请注意句号分隔符,而不是冒号。我需要保留从句点到左边的所有内容,但将分钟转换为百分之一小时用于时间跟踪,并将结果保留在同一单元格中


我有一个excel表格,可以将每一分钟的时间映射到相应的第一百个小时,因此可以执行某种查找,或者可以使用从头开始计算的公式。我知道公式
=(“hh:mm”*24)
会将小时/分钟转换为小时/百分之一,但我很难将其转换为我的用例。我可能会使用
RIGHT
功能获取我的分钟数并将其转换,但我如何维护从左周期开始的所有内容,无论是一个小时数字还是两个小时数字?

我建议您在此处使用多个单元格-数据格式为当前格式的原始单元格,以及格式如您所述的新单元格。否则(即:用数据在同一单元格上重写)将需要VBA对这种性质的东西进行不必要的复杂处理

假设当前数据在A列中,将其放入A1并向下拖动:

=VALUE(LEFT(A1,FIND(".",A1)-1))+VALUE(MID(A1,FIND(".",A1)+1,LEN(A1)))/60

这样做的目的是将A1中最左边的字符添加到存在“.”的位置,并添加A1中最右边的字符,从存在“.”的位置开始添加到A1的末尾。最右边的字符已更改为/60,以移动到基于十进制的系统。

下面是一个快速脏工作表事件:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Range("E:E"), Target) Is Nothing Then
    Target = Int(Target) + (Target - Int(Target)) * 100 / 60
End If
Application.EnableEvents = True
End Sub

将其放入所需工作表的工作表代码中。

如果列E是格式为
hh.mm
的时间,则
E2*24
应该有效。确保单元格的格式为常规格式,因为它会将其更改为十进制。列E的格式为数字。因此,例如,如果我在某件事情上总共工作了1小时53分钟,我将输入1.53,例如,
E2
E2
,然后将更改为1.88。您需要vba来更改正在测试的单元格的值。公式不能做到这一点。这将导致循环引用。所以,按照@Grade'Eh'Bacon的建议去做。另外,您如何知道输入的内容是真正的时间参考,而用户没有在他们的头脑中进行计算。在我的头脑中,将1.15改为1.25是很容易的。我在表格上做所有的输入,这样我可以确保数字是小时/分钟,并且你是正确的。对于某些时间间隔(例如,每5、10、15、20、30分钟),计算很简单。问题是追踪到一分钟的间隔,而不必花不必要的时间在精神上计算时间。不幸的是,由于我必须将电子表格导入的软件,两列不是一个选项,因此我将研究VBA选项。感谢您的快速代码,Scott!我把它放在了工作表的代码表中,当我在“E”中的单元格中输入一个值时,它就像在计算一样,但代码不会影响单元格中的值。作为我的测试值,我输入了1.15。@rkent-Hmm。它在E列,对吗?现在代码只适用于E列@rkent你让它工作了吗?如果是,请单击答案旁边的绿色复选标记。这是只有你才能做的事。有意思的是,今天早上我用另一个名称保存了一份工作簿,重新启动Excel,然后使用工作簿的新副本,然后我就可以让它工作了。它在旧工作簿中仍然不起作用。谢谢