Converter texto (dias, minutos, segundos) em dias

3
  1. 18hr 28m 49s
  2. 18 days 19hr 12m 30s

Eu tenho uma planilha do Excel com valores de texto (como os exemplos acima).

Existe uma maneira de convertê-los em dias como:

  • Se eu tiver 18 horas, ele será arredondado para o dia mais próximo e se tornará um dia.
  • Se é 18 dias e 19hrs, torna-se 19 dias

Observe que esses valores estão no formato de texto. Não data. Não é hora.

    
por Brian 08.02.2017 / 08:53

2 respostas

2

Você pode usar a seguinte fórmula

=IF(MID(A1,FIND("hr",A1,1)-2,2)>12,IF(ISNUMBER(FIND("day",A1,1)),VALUE(LEFT(A1,FIND("day",A1,1)-1))+1&"days",1&"day"))

Eu usei 12hr como limite para incrementar 1 dia você pode mudar isso como você quer
Qualquer que seja o texto, ele encontrará "h" e "dia" e calculará de acordo com ele. Escreva também hr e day (na fórmula) da mesma maneira que está em seu texto para deixar a fórmula encontrá-lo.

    
por 08.02.2017 / 10:19
1

Parece um exagero, mas você pode usar uma função definida pelo usuário, esse é o código:

Public Function toDays(datestring As String)
    Dim datearray() As String
    datearray = Split(datestring, " ")
    totaldays = 0
    totalhours = 0
    totalmin = 0
    totalsecs = 0
    For i = LBound(datearray) To UBound(datearray)
        newdata = datearray(i)
        If IsNumeric(newdata) = True Then
            totaldays = totaldays + newdata
            i = i + 1
        Else
            For j = 1 To Len(newdata)
                m = Mid(newdata, j, 1)
                If IsNumeric(m) = False Then
                    separation = j
                    j = Len(newdata)
                End If
            Next j
            numvalue = Mid(newdata, 1, separation - 1)
            measurevalue = LCase(Mid(newdata, separation))
            Select Case measurevalue
                Case Is = "hr"
                    totalhours = totalhours + numvalue
                Case Is = "m"
                    totalmin = totalmin + numvalue
                Case Is = "s"
                    totalsecs = totalsecs + numvalue
            End Select
        End If
    Next i
    finalresult = Round(totaldays + (totalhours / 24) + (totalmin / 1440) + (totalsecs / 86400))
    toDays = finalresult  & " days"
End Function

Abra macros com ALT + F11 clique com o botão direito em This Workbook e insira um novo módulo. Cole o código no lado direito da tela.

Agora, se seus dados estiverem na célula A1 , então, na célula A2 , você deverá colocar =toDays(A1) .

    
por 08.02.2017 / 10:56