现在,我知道不可能在单元格中输入数字并运行公式并替换该数字,因为那样的话,该公式将不得不在先前的结果上再次运行,依此类推...
我要寻找的不是更改单元格的值,而是使用单元格的值显示公式的结果。如果可能的话,问题还可能是如何将公式用作自定义单元格格式。
基本上,我想做的是在一个单元格中输入秒数,并以十进制格式将该单元格显示为小时。例如,如果我在一个单元格中输入12000,格式应显示为3,33h。只需在另一个单元格中不使用该公式即可得出与公式= 12000/3600相同的结果。我不想更改12000的值。我认为应该可以,因为格式可用于将数字解释为日期,例如显示小时,分钟和秒。我只是不知道如何告诉它忽略日期部分,而只是将数字解释为秒。
例如,我也会对3h 20m 00s感到满意。
答案 0 :(得分:0)
您可以通过VBA进行格式化,而不是通过格式
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Dim c As Range
For Each c In Target.Cells
If c.Column = 1 Then
If IsNumeric(c.Value) Then
c.Value = SecToStr(CLng(c.Value))
End If
End If
Next
End If
End Sub
Function SecToStr(v As Long) As String
Const Mnt As Integer = 60
Const Hor As Integer = 3600 '60*60
Const Dys As Long = 86400 '60*60*24
Dim tmp As Long
If v >= Dys Then
tmp = v Mod Dys
v = (v - tmp) / Dys
SecToStr = v & "d "
v = tmp
End If
If v >= Hor Then
tmp = v Mod Hor
v = (v - tmp) / Hor
SecToStr = SecToStr & v & "h "
v = tmp
End If
If v >= Mnt Then
tmp = v Mod Mnt
v = (v - tmp) / Mnt
SecToStr = SecToStr & v & "m "
v = tmp
End If
SecToStr = SecToStr & v & "s"
End Function
更改col A
中的任何单元格