시간 범위를 나타내는 문자열 값이 포함 된 열이있는 자동으로 생성 된 Excel 시트가 있습니다. I 소수점 시간 (예를 들어, 17.1 시간) 표시로 변환 할 필요가시간, 분, 초를 포함하는 문자열을 십진수로 변환합니다.
17 hours, 6 minutes, 16 seconds
: 값은 다음과 같은 형식을 가지고있다. 어떻게해야합니까?
시간 범위를 나타내는 문자열 값이 포함 된 열이있는 자동으로 생성 된 Excel 시트가 있습니다. I 소수점 시간 (예를 들어, 17.1 시간) 표시로 변환 할 필요가시간, 분, 초를 포함하는 문자열을 십진수로 변환합니다.
17 hours, 6 minutes, 16 seconds
: 값은 다음과 같은 형식을 가지고있다. 어떻게해야합니까?
VBA를 사용할 필요가 없습니다. 이 워크 시트 수식은 트릭을 수행합니다.
=24*VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B4," hours, ",":"),
" minutes, ",":")," seconds",""))
이는 "초"문자열을 삭제하고 :
문자로 "시간"과 "분"구분 기호 문자열을 대체합니다. VALUE
은 이것을 날짜/시간으로 해석합니다.이 날짜/시간은 하루의 일부로 평가됩니다. 그래서 "17 시간 6 분 16 초"예를 들어, 0.712685185 일. 이 값에 24를 곱하면 십진수 시간, 즉 17.1044가됩니다.
SUBSTITUTE
으로 시작할 수 있습니다,이보다 강력한 만들려면하지만, 위의 당신에게 일반적인 아이디어를 제공합니다.
당신은 VBA에서 작업을 수행해야한다면, 나는 이런 식으로 할 것 :
항상Dim myTimeString As String
Dim splitTime() As String
Dim decimalHours As Double
myTimeString = "17 hours, 6 minutes, 16 seconds"
' Remove useless characters
myTimeString = Trim(Replace(Replace(Replace(myTimeString, " ", ""), _
",", ""), "seconds", ""))
' Replace "hours" and "minutes" by a useful delimiter, ":"
myTimeString = Replace(Replace(myTimeString, "minutes", ":"), "hours", ":")
' String now looks like this: "17:6:16". Now split it:
splitTime = Split(myTimeString, ":")
decimalHours = CInt(splitTime(0)) + CInt(splitTime(1))/60 + _
CInt(splitTime(2))/3600
' Alternatively, convert the string to a date, then to decimal hours
Dim myDate As Date
myDate = CDate(myTimeString)
decimalHours2 = 24 * CDbl(myDate) ' same result.
더 좋은 방법이있을 수 있지만,이 방법 중 하나입니다.
hours = Trim(Split(timeString, "hours,")(0))
minutes = Trim(Split(Split(timeString, "hours,")(1), " minutes,")(0))
seconds = Trim(Split(Split(Split(timeString,"hours,")(1)," minutes,")(1), "seconds")(0))
TimeInPercentage = CInt(hours) + (1/60) * (CInt(minutes)) + (1/3600) * CInt(seconds)
하나는 시간 간격이 일을 한 무슨 경우 : – aevanko
장을, 어떻게 작동하는지 잘 쓰여진 설명 그 안에? 나는 일/일 대체를 추가하려고했지만 작동하지 않았다 : S –
VBA 솔루션을 자동으로 가정하지 않기 때문에 +1. – JimmyPena