Извлечение времени из текстовой строки в Excel - PullRequest
0 голосов
/ 14 июля 2011

Мне предоставили много времени из процесса Unix, они отображаются в следующем формате:

system001: реальные 9m31.14s

system002: реальные 4m31.14s

system007: реальные 18м2,14

system104: реальные 40m31.80s

Они отображаются в виде одного столбца данных, где каждая система находится в уникальной строке на листе Excel.

Я бы хотел иметь возможность извлекать значения минут и секунд в поле на основе времени, чтобы я мог рассчитать среднее время выполнения, общее время выполнения и т. Д.

Как лучше всего добиться этого, учитывая, что у меня есть тысячи строк данных?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

текст в столбцы

В качестве альтернативы вы можете использовать опцию text to columns для многократного разделения текста в столбце

  • разделить на основе двоеточия
  • разделить на основе пространства
  • разделить на основе m
  • разделить на основе s

Вот макрос, чтобы сделать это автоматически!

Sub Macro1()
'
' Macro1 Macro
'

'
    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Space:=False, OtherChar:=":"
    Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, Space:=True
    Columns("B:B").Delete
    Columns("C:C").TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, OtherChar:="m"
    Columns("D:D").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, OtherChar:="s"
End Sub
0 голосов
/ 14 июля 2011

Предполагая, что ваше значение находится в столбце А, вы можете использовать эти две формулы:

Minutes: =LEFT(RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1)),SEARCH("m",RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1)))-1)
Seconds: =MID(RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1)),SEARCH("m",RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1)))+1, LEN(RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1))) -SEARCH("m", RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1)))-1)

ИЛИ, как я сделал, вывел общую формулу в столбец B, чтобы уменьшить количество повторений с формулой: =RIGHT(A1,LEN(A1) -4- SEARCH("real ",A1)) а затем упростить два других, чтобы использовать это (и позволить Excel повторно использовать последний расчет вместо того, чтобы делать это снова и снова):

Minutes: =LEFT(B1,SEARCH("m",B1)-1)
Seconds: =MID(B1,SEARCH("m",B1)+1, LEN(B1) -SEARCH("m", B1)-1)

Конечно, вы все еще можете оптимизировать это еще больше, чтобы вычислить индекс 'm' только один раз и использовать его повторно, но я уверен, что вы поняли идею.

...