Макрос для редактирование содержимого ячейки и изменения ее формата
Модератор: Naeel Maqsudov
Уважаемые Господа,
Помогите пожалуйста решить следующую (нутром чую, что чрезвычайно простую) задачу:
В рабочем листе есть куча дробных чисел вида : .001; .562; .785;
Мне необходимо именно макросом преобразовать эти числа в так, чтобы с ними можно было производить операции.
т.е. необходимо
1. во всех ячейках с такими числами точку заменить на запятую
2. получившиеся мета-числа (они уже нормально написаны, но все еще имеют текстовой формат) преобразовать в собственно числа.
ПОдскажите пожалуйста код...
Я попробовал создать такой макрос автоматической записькю, но не получилось...
Помогите пожалуйста решить следующую (нутром чую, что чрезвычайно простую) задачу:
В рабочем листе есть куча дробных чисел вида : .001; .562; .785;
Мне необходимо именно макросом преобразовать эти числа в так, чтобы с ними можно было производить операции.
т.е. необходимо
1. во всех ячейках с такими числами точку заменить на запятую
2. получившиеся мета-числа (они уже нормально написаны, но все еще имеют текстовой формат) преобразовать в собственно числа.
ПОдскажите пожалуйста код...
Я попробовал создать такой макрос автоматической записькю, но не получилось...
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Пример, набросок... Посмотрите.
Код: Выделить всё
Sub test()
Dim UsedRange As Range
Worksheets(1).UsedRange.Replace _
What:=".", Replacement:=",", LookAt:=xlPart
For Each cell In Worksheets(1).UsedRange
cell.Value = cell.Value * 1'чтобы получить число, умножаем на 1
Next
End Sub
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
1) Не умножает: Type Mismatch
Такое сообщение об ошибке будет, например, при попытке умножить на 1 текстовую строку, которые, скорее всего, на листе присутствуют.
Поэтому, достаточно просто игнорировать ошибку с помощью On Error Resume Next.
Поэтому, достаточно просто игнорировать ошибку с помощью On Error Resume Next.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Давайте исходить из того, что приведенный код работает (см. файл) и ошибки не выдает. Могу предположить, что я не совсем правильно понял задачу и исходный текст выглядит как:
.001
.562
.785
p.s. диапазон данных, при желании можно ( да и наверное, нужно) задать жестко, например - Range("A1:A10").
я же понял, что исходные данные выглядят так как приведено в файле, т.е.
.001; .562; .785;
.001
.562
.785
p.s. диапазон данных, при желании можно ( да и наверное, нужно) задать жестко, например - Range("A1:A10").
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Спасибо большое,
А что делает
Worksheets(1).Range("A1:A10") .Replace What:=".", Replacement:=",", LookAt:=xlPart
А что делает
? Подскажите пожалуйстаLookAt:=xlPart
Дело действительно в том, что в рабочей книге есть ячейки с текстом, и из-за этого вылезает ошибка.
А Метод On Error Resume Next не сработал.
А Метод On Error Resume Next не сработал.
VictorM, код-то рабочий, кто спорит? Просто, ошибка "Type Mismatch" как раз и наводит на мысль, что происходит именно то, о чем я говорил. По поводу того, что делать, считаю, что все-таки проще перед циклом в Вашем коде вставить On Error Resume Next, а по выходу из цикла On Error GoTo 0. Это оправдано тем, что во-первых, другие ошибки не возможны, во-вторых, если обрабатывается несколько листов (книг), то не нужно для каждого случая подставлять свой диапазон.
Fedozzz, Что значит
Метод On Error Resume Next не сработал?