=IFERROR(LEFT(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (0)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (0)*LEN(A2)+1, LEN(A2)))))*INDEX({2400,2400,480,480,60,60,1,1},MATCH(TRIM(MID(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (0)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (0)*LEN(A2)+1, LEN(A2)))),999)),{"week","weeks","day","days","hour","hours","minute","minutes"},0)),0)+IFERROR(LEFT(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (1)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (1)*LEN(A2)+1, LEN(A2)))))*INDEX({2400,2400,480,480,60,60,1,1},MATCH(TRIM(MID(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (1)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (1)*LEN(A2)+1, LEN(A2)))),999)),{"week","weeks","day","days","hour","hours","minute","minutes"},0)),0)+IFERROR(LEFT(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (2)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (2)*LEN(A2)+1, LEN(A2)))))*INDEX({2400,2400,480,480,60,60,1,1},MATCH(TRIM(MID(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (2)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (2)*LEN(A2)+1, LEN(A2)))),999)),{"week","weeks","day","days","hour","hours","minute","minutes"},0)),0)+IFERROR(LEFT(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (3)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (3)*LEN(A2)+1, LEN(A2)))))*INDEX({2400,2400,480,480,60,60,1,1},MATCH(TRIM(MID(TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (3)*LEN(A2)+1, LEN(A2))), FIND(" ", TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",LEN(A2))), (3)*LEN(A2)+1, LEN(A2)))),999)),{"week","weeks","day","days","hour","hours","minute","minutes"},0)),0)
Public Function CalcMinutes(strText As String) As Variant
Dim arrChunk() As String
Dim strChunk As Variant
Dim arrWord() As String
CalcMinutes = 0
If strText = "" Then Exit Function
arrChunk = Split(strText, ",")
For Each strChunk In arrChunk
arrWord = Split(Trim(strChunk), " ")
If UBound(arrWord) <> 1 Then
CalcMinutes = CVErr(xlErrNA)
Exit Function
End If
Select Case LCase(arrWord(1))
Case "minute", "minutes"
If IsNumeric(arrWord(0)) Then
CalcMinutes = CalcMinutes + CInt(arrWord(0))
Else
CalcMinutes = CVErr(xlErrNA)
Exit Function
End If
Case "hour", "hours"
If IsNumeric(arrWord(0)) Then
CalcMinutes = CalcMinutes + (CInt(arrWord(0)) * 60)
Else
CalcMinutes = CVErr(xlErrNA)
Exit Function
End If
Case "day", "days"
If IsNumeric(arrWord(0)) Then
CalcMinutes = CalcMinutes + (CInt(arrWord(0)) * 480)
Else
CalcMinutes = CVErr(xlErrNA)
Exit Function
End If
Case "week", "weeks"
If IsNumeric(arrWord(0)) Then
CalcMinutes = CalcMinutes + (CInt(arrWord(0)) * 2400)
Else
CalcMinutes = CVErr(xlErrNA)
Exit Function
End If
Case Else
CalcMinutes = CVErr(xlErrNA)
Exit Function
End Select
Next
End Function
2 weeks, 1 day, 6 hours, 30 minutes
with that spacing, and commas, etc? And is that always true? And will all 4 pieces always be present, even if say minutes was 0?
»bp