powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос для выборочного преобразования содержимого ячейки из строки в число
15 сообщений из 15, страница 1 из 1
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35908356
Sergei A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Возникла такая проблема:
В таблицу Excel импортируются данные в формате:

EXW value Jan Feb2007 780832.93548613.742008 558488.15327691.67Monthly Evolution-28%-40%

Соответственно, нужно макросом, во всех листах (их два или три) преобразовать "780832.93" в число (желательно, в числовой формат с разделением групп разрядов и нулём знаков после запятой), а "-28%" в число с форматом процентный, либо пропустить преобразование.

Например, этот макрос
Код: plaintext
1.
2.
3.
4.
Sub macros1()
With ActiveSheet.Range("C10:Q100") 
    .Formula = .Value
End With
End Sub
с преобразованием справляется, но он в лоб переделывает всё строки в число, не заморачиваясь с процентами.
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35910937
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так там формулы или значения
если 2, то ищем % и делаем формат...
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35910945
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужен пример, т.к. внутреннее ПО часто импортит данные в ткстовом формате и не понятно, есть ли у вас в строке % или он ставится автоматом
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35910976
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-нить вот так можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub FrmtChng()
Dim Rn As Range

For Each Rn In Selection
If InStr( 1 , Rn, "%") <>  0  Then
    Rn.NumberFormat = "0%"
Else
    Rn = Rn *  1 
    Rn.NumberFormat = "#,##0"
End If
Next
End Sub
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35911365
Sergei A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB,

Пример прилагаю.

Ваш пример прерывается на строке
Rn = Rn * 1
авторRun-time error '13'
Type mismatch
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35911367
Sergei A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35911388
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно слетает, у вас excel точки как запяте не воспринимает! Это можно переставить. Как - в настройка windows (поиск по форуму).

Но вот так всё будет работать нацелен на выделенный диапазон. Цикл по листам, я думаю, сами сделаете:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub FrmtChng()
Dim Rn As Range

For Each Rn In Selection
If InStr( 1 , Rn, "%") <>  0  Then
    Rn = Trim(Rn)
    Rn.NumberFormat = "0%"
Else
    Rn.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
    Rn = Rn *  1 
    Rn.NumberFormat = "#,##0"
End If
Next
End Sub
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35911422
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei A.,
Я бы на вашем месте звонил программерам, с ними вопросы решал.
Выгрузка из ПО должна быть материалом для анализа, а не сырыми данными...
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35913089
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei A.Добрый день.

Возникла такая проблема:
В таблицу Excel импортируются данные в формате:

EXW value Jan Feb2007 780832.93548613.742008 558488.15327691.67Monthly Evolution-28%-40%

Соответственно, нужно макросом , во всех листах (их два или три) преобразовать "780832.93" в число (желательно, в числовой формат с разделением групп разрядов и нулём знаков после запятой), а "-28%" в число с форматом процентный, либо пропустить преобразование.


Здравствуйте!

Поиск и замена. Найти - точку. Заменить на - запятая. Отформатируйте как хотите и не мучайте себя с VBA.
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35913106
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа Игорь...Поиск и замена...

В догонку.

Еще проще сделать шлюз для Вашего файла используя что-то типа этого:

=ЗНАЧЕН(ПОДСТАВИТЬ(A1;".";","))
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35913171
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПИ,
Господин выложил пример, там проще в vba, т.к. чёрт знает как выгружаются данные из ПО
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35913196
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBПИ,
Господин выложил пример, там проще в vba, т.к. чёрт знает как выгружаются данные из ПО

Я посмотрел пример. На основе примера дал совет. Выгруженные данные из другого ПО не хаотичны. Они имеют относительно стабильную структуру.

Подход шлюзов к данным с такими делами справляется "на ура".

Вы считаете проще делать это на VBA - делайте. Я считаю, что проще сделать шлюз.

Есть много способов содрать с кошки шкурку.
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35913462
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы не мучить кошек:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub Text2Num()
  With ActiveSheet.UsedRange
    .NumberFormat = "General"
    .Value = .Value
  End With
End Sub
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35913467
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIЧтобы не мучить кошек:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub Text2Num()
  With ActiveSheet.UsedRange
    .NumberFormat = "General"
    .Value = .Value
  End With
End Sub


А зачем же предложили еще один способ содрать с нее (кошки) шкурку?
...
Рейтинг: 0 / 0
Макрос для выборочного преобразования содержимого ячейки из строки в число
    #35940027
Sergei A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дабы подвести итог.
Спасибо все участвовавшим, особенно ZVI - в дело пошёл его слегка переделанный макрос.

авторЯ бы на вашем месте звонил программерам, с ними вопросы решал.
Ну, собственно я этот отчёт и писал, но возникла проблема несоответствия ТехЗадания и пользовательского представления о нём, с возможностями построителя отчётов и MS SQL.

авторВыгрузка из ПО должна быть материалом для анализа, а не сырыми данными...
Ну, основная аналитика на сервере и выполняется, просто пользователям, как выяснилось позже, может понадобится посчитать банальную сумму по столбцу/строке.

Поиск и замена. Найти - точку. Заменить на - запятая.
Первым делом это сделал :)
Проблема только в том, что пришлось бы так делать каждый раз после выгрузки отчёта, а если записать макрос и выполнить - то нужный эффект не достигается :(

Пришлось задействовать VBA и немного подправить процедуру.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос для выборочного преобразования содержимого ячейки из строки в число
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]