Страницы: 1
RSS
Обработать текст 13 янв., 07:59:13 как дату, Как помочь екселю такое представление понимать датой или при вставке удалить " .,"
 
После вставке в ячейку и дальнейшем удалении в ручную точки с запятой ексель автоформатирует текст в дату которую распознает - как автоматизировать данную операцию или какой то другой вариант.
Изменено: igorbych - 13.01.2022 14:10:23
 
Цитата
написал:
как автоматизировать данную операцию
выделяете столбец с этими датами(или только нужные ячейки) -сочетание клавиш Ctrl+H. Найти: ".,"(без кавычек), Заменить на: оставляете поле пустым. В этом же окне раскрываете кнопку Параметры и убеждаетесь, что с пункта "Ячейка целиком" снята галочка. Жмете Заменить все. Преобразование должно потом произойти автоматически.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В макросе который обрабатывается по изменению на листе есть две проблемы - но в целом работает:
1. При действии удаление - вставляет  содержимое буфера
2. При вставке обработанного значения из соседнего столбца - преобразует в дату и добавляет строку или подобный символ (Пример ячейка Q9), что не дает распознать ячейку как дату
3. Периодами вываливается с ошибкой на алгоритм и макрос вообще перестает работать до перезагрузки
Код
Private Sub Worksheet_Change(ByVal Target As Range)
'On Error GoTo ErrorHandler
If Not Intersect(Target, Range("g9:z9")) Is Nothing Then
'If WorksheetFunction.Count(Intersect(Target, Range("g9:z9"))) > 0 Then
   Application.EnableEvents = False
   Application.Undo
   Dim MSForms_DataObject As Object
   Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
   With MSForms_DataObject
   .GetFromClipboard
   Target = Replace(.GetText(1), ".,", "")
   End With
   Application.EnableEvents = True
       Set MSForms_DataObject = Nothing
'End If
End If
ErrorHandler:
End Sub
 
Попробуйте так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rg As Range, cell As Range
  Set rg = Intersect(Target, Range("G9:Z9"))
  If Not rg Is Nothing Then
    Application.EnableEvents = False
    For Each cell In rg.Cells
      cell.FormulaLocal = Replace(cell.FormulaLocal, ".,", "")
      cell.NumberFormat = "dd.mm.yyyy hh:mm"
    Next cell
    Application.EnableEvents = True
  End If
End Sub
Владимир
 
Отличное и оптимальное решение и сбоев побочных не дает. Спасибо.
Страницы: 1
Наверх