For Each c In Intersect(Selection.Parent.UsedRange, Selection).Cells s = c.Value If IsNumeric(s) Then c.NumberFormat = "general" c.Value = --Replace(s, vbTab, "") End If Next
Application.EnableEvents = True: Application.Calculation = defCALC Application.DisplayAlerts = True: Application.ScreenUpdating = True End Sub
[/vba]
Ers1der, как вариант - выделить ячейки, выполнить [vba]
Код
Sub obrabotkaTab() Dim c, s$ For Each c In Selection.Cells s = c.Value c.NumberFormat = "general" c.Value = --Replace(s, vbTab, "") Next End Sub
[/vba]
Так с подстраховкой, и можно выделить сразу весь лист: [vba]
For Each c In Intersect(Selection.Parent.UsedRange, Selection).Cells s = c.Value If IsNumeric(s) Then c.NumberFormat = "general" c.Value = --Replace(s, vbTab, "") End If Next
Application.EnableEvents = True: Application.Calculation = defCALC Application.DisplayAlerts = True: Application.ScreenUpdating = True End Sub
Вообще можно в коде сразу по всему диапазону Replace(диапазон, vbTab, "") но там и формат ячеек нужно менять чтоб далее работать нормально, но на практике не всем ячейкам, даже тут есть где в ячейках нет чисел, но есть текст, поэтому я перебирал ячейки, а чтобы быстрее шевелилось - желательно выключать всякие события и пересчёты.
Вообще можно в коде сразу по всему диапазону Replace(диапазон, vbTab, "") но там и формат ячеек нужно менять чтоб далее работать нормально, но на практике не всем ячейкам, даже тут есть где в ячейках нет чисел, но есть текст, поэтому я перебирал ячейки, а чтобы быстрее шевелилось - желательно выключать всякие события и пересчёты.Hugo
И всё равно нужно дорабатывать например заменой запятой на запятую, но вдруг там окажутся целые значения? Хотя не, целые они сразу числа... Ну как вариант значит можно сделать просто две замены.
А ну да, формат общий, но если просто всему диапазону сделать [vba]
И всё равно нужно дорабатывать например заменой запятой на запятую, но вдруг там окажутся целые значения? Хотя не, целые они сразу числа... Ну как вариант значит можно сделать просто две замены.Hugo
Hugo, Вы зачем то усложняете задачку, а ведь это лишние тормоза. Мой пример проще и работает гораздо быстрее с тем же результатом. Этот пример похож на выгрузку с какой то программы, все значения в виде текста, а нужны числа. Я считаю, что функция Val лучше всего подходит для этого. Она автоматом удаляет из теста пробелы, символы табуляции и знаки перевода строк, если таковые имеются. Нужно только сделать замену запятых на точки, чтобы не потерять дробную часть чисел.
Hugo, Вы зачем то усложняете задачку, а ведь это лишние тормоза. Мой пример проще и работает гораздо быстрее с тем же результатом. Этот пример похож на выгрузку с какой то программы, все значения в виде текста, а нужны числа. Я считаю, что функция Val лучше всего подходит для этого. Она автоматом удаляет из теста пробелы, символы табуляции и знаки перевода строк, если таковые имеются. Нужно только сделать замену запятых на точки, чтобы не потерять дробную часть чисел.i691198
Сообщение отредактировал i691198 - Суббота, 05.10.2024, 21:24