Преобразовать Тест в Число

Автор Ingwar, 22 октября 2024, 13:25

0 Пользователи и 1 гость просматривают эту тему.

Ingwar

Здравствуйте!
Помогите пожалуйста макросом преобразовать Текст в Число в столбцах F и H.

sokol92

Выделяем проблемный диапазон ячеек.

Меню / Данные / Текст по столбцам. Параметры разделителя: фиксированная ширина. Выделяем столбец данных и устанавливаем тип столбца: Дата (ДМГ). Кнопка: OK.
Владимир.

sokol92

Цитата: Ingwar от 22 октября 2024, 13:25Помогите пожалуйста макросом преобразовать
Прошу прощения, не обратил внимания на "макросом".
Выделите диапазон проблемных ячеек и запустите нижеследующий макрос. Для простоты для ячеек устанавливается "Стандатный" формат.
Sub Test
  Dim oRange, arr, i As Long, j As Long
 
  oRange=ThisComponent.CurrentSelection
 
  arr=oRange.dataArray
 
  For i=0 To Ubound(arr)
    For j=0 To Ubound(arr(i))
      If IsDate(arr(i)(j)) And Len(arr(i)(j))>0 Then
        arr(i)(j)=CDbl(CDate(arr(i)(j)))
      End If 
    Next j
  Next i 

  oRange.NumberFormat=0    ' общий формат ячеек
  oRange.dataArray=arr

End Sub
Владимир.

Ingwar

Из всех проблемных ячеек только одна преобразовалась

sokol92

Значит, я дважды невнимательно читал - сделал для преобразования дат.
Версия 2 - исправляем даты и числа.
Sub Test
  Dim oRange, arr, i As Long, j As Long
 
  oRange=ThisComponent.CurrentSelection
 
  arr=oRange.dataArray
 
  For i=0 To Ubound(arr)
    For j=0 To Ubound(arr(i))
      If Len(arr(i)(j))>0 Then
        If IsDate(arr(i)(j)) Then
          arr(i)(j)=CDbl(CDate(arr(i)(j)))
        ElseIf IsNumeric(arr(i)(j)) Then
          arr(i)(j)=CDbl(arr(i)(j)) 
        End If
      End If  
    Next j
  Next i

  oRange.NumberFormat=0    ' общий формат ячеек
  oRange.dataArray=arr

End Sub
Владимир.

Ingwar

Огромное спасибо!
Было слишком много текста в процедуре, поэтому я решил чуть-чуть сократить.
Все замечательно работает!

Sub Test

ThisComponent.Sheets(0).getCellRangeByPosition (5, 1, 5, 13).NumberFormat=0

End Sub