Как вставить CR перед текстовым шаблоном #: ## в тексте ячейки Excel

303
OKS

У меня большое количество текста в ячейках многострочной электронной таблицы Excel. Текстовые блоки в ячейках разбиты по временным меткам, например, 16:43 или, в некоторых случаях, 16:43. Я хотел бы проанализировать метки времени и вставить их CHR(10)перед метками времени.

До:

3:33 AM Waiting for customer permission to remote control desktop.3:33 AM Remote Control successfully initiated.3:35 AM Remote Control ended.3:36 AM Remote Control successfully initiated.3:40 AM The connection to the customer was lost. This session will reconnect if and when the customer reestablishes a network connection.3:40 AM Disconnected (Applet)3:40 AM Remote Control ended.3:45 AM Connecting to: control.app02-01.l 

После:

3:33 AM Waiting for customer permission to remote control desktop. 3:33 AM Remote Control successfully initiated. 3:35 AM Remote Control ended.3:36 AM Remote Control successfully initiated. 3:40 AM The connection to the customer was lost. This session will reconnect if and when the customer reestablishes a network connection. 3:40 AM Disconnected (Applet) 3:40 AM Remote Control ended.3:45 AM Connecting to: control.app02-01.l 
0
(1) Почему вы изменили свой пример, чтобы между строками текста были пустые строки? Это то, что вы хотите? Если так, пожалуйста, [отредактируйте] вопрос, чтобы сказать так. (2) Вы пропустили пару временных отметок в данных вашего примера. (3) Можем ли мы принять максимальное количество отметок времени в каждой ячейке? (4) Вы пробовали что-нибудь? Какие? (5) Какова общая картина того, как вы хотите использовать эту функцию? Вы хотите сделать это (а) один раз, (б) время от времени, по требованию, или (в) постоянно (т. Е. Выход должен изменяться немедленно при изменении входных данных)? (6) Есть ли у вас какие-либо предпочтения функции листа по сравнению с VBA? Scott 7 лет назад 0

1 ответ на вопрос

0
Gary's Student

Этот маленький UDF () сканирует входную строку в обратном направлении в поисках двоеточия.

Когда он находит двоеточие, он вставляет CHR (10) в соответствующее место перед двоеточием:

Public Function Fragment(sIN As String) As String Dim L As Long, i As Long Dim temp As String, CH As String L = Len(sIN) temp = "" For i = L To 1 Step -1 CH = Mid(sIN, i, 1) If CH <> ":" Then temp = CH & temp Else temp = CH & temp i = i - 1 temp = Mid(sIN, i, 1) & temp i = i - 1 CH = Mid(sIN, i, 1) If IsNumeric(CH) Then temp = Chr(10) & CH & temp Else temp = CH & Chr(10) & temp End If End If Next i Fragment = temp End Function 

enter image description here

Он может обрабатывать как одно, так и двузначные часы.
Убедитесь, что выходная ячейка отформатирована с обручем на .
Другой подход заключается в использовании Regex.

Похожие вопросы