0

我在作为更大练习工作簿的一部分的 Excel 工作表中保留了运行日志。我正在尝试设置工作表,因此每次进入新运行时我都不必手动进行数学运算。我输入并希望工作表为我计算未完成的圈数(我的跑步者观看的最后一英里之后的跑步部分不会给我一圈时间,比如 0.25 英里)我使用了一个奇怪的符号如有必要,我愿意更改的时间,但我最关心它的可读性,因此我不想将其更改为使 excel 工作更容易但在我浏览运行时困扰我的东西。这是它的样子:

Date  Distance  TotTime  Avg Time  1      2      3  4  5  6  7  8  9  10  UnfinLap
10/2  2.3 mi    19'35"   8'31"     8'28"  8'53"                           2'14"

我想要做的是对于 UnfinLap 列中的每个单元格,我希望它将总时间转换为一个值,转换并减去每个单圈时间,然后最终将其转换回我选择的格式的字符串。并且跑步的长度各不相同,因此 5.2 英里的跑步将有 5 列值。我没有大量的 excel 或 VBA 经验,但我学得很快并且有一些编程经验,所以我尝试为此创建一个宏,但没有取得多大成功。

Sub Lap_Time_Function()
'
' Lap_Time_Function Macro
' This converts the times to value, does the math then converts back
'
    ' Variable Declarations
    Dim TotMins As Integer
    Dim TotSecs As Integer
    Dim LapMins As Integer
    Dim LapSecs As Integer
    Dim LoopCounter As Integer
    Dim UnfinishedLap As String
    Dim wb As Workbook
    Dim ws As Worksheet

    ' Initial values set
    LoopCounter = 7
    TotMins = WorksheetFunction.Value(WorksheetFunction.Left(Cells(ActiveCell.Row, 2), 2))
    TotSecs = WorksheetFunction.Value(WorksheetFunction.Mid(Cells(ActiveCell.Row, 2), 4, 2))
    wb = ActiveWorkbook
    ws = wb.Sheets("Run Log")

    ' Calculate time of unfinished lap by subtracting current finished lap from total time
    Do While Not IsEmpty(Cells(ActiveCell.Row, LoopCounter))
        LapMins = WorksheetFunction.Value(WorksheetFunction.Left(Cells(ActiveCell.Row, LoopCounter), 2))
        LapSecs = WorksheetFunction.Value(WorksheetFunction.Mid(Cells(ActiveCell.Row, LoopCounter), 4, 2))
        TotMins = TotMins - LapMins
        TotSecs = TotSecs - LapSecs
        LoopCounter = LoopCounter + 1
    Loop

    UnfinishedLap = CStr(TotMins) & CStr(Chr(39)) & CStr(TotSecs) & CStr(Chr(34))
    Cells(ActiveCell.Row, 17) = UnfinishedLap

End Sub

如果有更简单的解决方案或者任何人都可以指出我做错了什么,我将不胜感激。

4

1 回答 1

0

您根本不需要 VBA。

m'ss"将(in A1) 转换为 Excel 时间的Excel 公式:

=TIMEVALUE("0:"&SUBSTITUTE(SUBSTITUTE(A1;"'";":");"""";""))

Excel 公式将 Excel 时间 (in B1) 转换为m'ss"

=TEXT(B1;"[m]'ss")&""""

使用这些函数,您可以使用 Excel 时间进行算术运算。

于 2013-10-08T07:36:03.467 回答