Всем привет. Хотел немного усовершенствовать макрос и так ничего у меня и не получилось с регулярными выражениями. Есть полно примеров с функциями которым скармливается оригинал (одна ячейка), паттерн и замена. Но как работать со всеми ячейками в экселе? Есть Cells.Replace но как можно в нём задать регулярные выражения? Короче сейчас у меня какой-то такой код, за неимением лучшего: [vba]
PS Это заплатка на лечение чисел в текстовом виде при экспорте из автокада. Когда из автокада извлекаются данные (через инструмент Извлечение данных), то все данные во-первых пишутся с апострофом перед ними, во-вторых числа задаются через точку. С апострофами борюсь очисткой форматов. А с точкой приходится как-то так (см.код). При этом надо бы сразу продумать что в автокаде на разных машинах могут быть форматы чисел с округлением до десятичных сотых и так далее. PPS То что можно заменить в настройках экселя разделитель на точку я знаю. Может это и был бы самый простой способ, а я всё усложняю? Я просто к запятой привык. Удобнее её с цифровой клавиатуры набирать.
Всем привет. Хотел немного усовершенствовать макрос и так ничего у меня и не получилось с регулярными выражениями. Есть полно примеров с функциями которым скармливается оригинал (одна ячейка), паттерн и замена. Но как работать со всеми ячейками в экселе? Есть Cells.Replace но как можно в нём задать регулярные выражения? Короче сейчас у меня какой-то такой код, за неимением лучшего: [vba]
PS Это заплатка на лечение чисел в текстовом виде при экспорте из автокада. Когда из автокада извлекаются данные (через инструмент Извлечение данных), то все данные во-первых пишутся с апострофом перед ними, во-вторых числа задаются через точку. С апострофами борюсь очисткой форматов. А с точкой приходится как-то так (см.код). При этом надо бы сразу продумать что в автокаде на разных машинах могут быть форматы чисел с округлением до десятичных сотых и так далее. PPS То что можно заменить в настройках экселя разделитель на точку я знаю. Может это и был бы самый простой способ, а я всё усложняю? Я просто к запятой привык. Удобнее её с цифровой клавиатуры набирать.fairylive
Сообщение отредактировал fairylive - Вторник, 18.10.2016, 23:31
Так нули остаются, после запятой. А эксель при этом этом проставляет в таких ячейках зелёный треугольничек и говорит что число сохранено как текст или перед ним стоит апостроф. Апостроф убирается так [vba]
Так нули остаются, после запятой. А эксель при этом этом проставляет в таких ячейках зелёный треугольничек и говорит что число сохранено как текст или перед ним стоит апостроф. Апостроф убирается так [vba]
т.е. вы хотите при заданном десятичном разделите точка, чтобы Excel воспринимал запятую как десятичный разделитель точка?
Разделитель целой и дробной части (Панель управления - язык и региональные стандарты) - запятая. В Экселе разделитель тоже запятая. Мне так удобно. Так хорошо. Но автокаду на это плевать. У него разделитель только точка. И выгружает в эксель он точку. Я хочу как-то с этим бороться с помощью VBA.
т.е. вы хотите при заданном десятичном разделите точка, чтобы Excel воспринимал запятую как десятичный разделитель точка?
Разделитель целой и дробной части (Панель управления - язык и региональные стандарты) - запятая. В Экселе разделитель тоже запятая. Мне так удобно. Так хорошо. Но автокаду на это плевать. У него разделитель только точка. И выгружает в эксель он точку. Я хочу как-то с этим бороться с помощью VBA.fairylive
У метода "Replace" только два подстановочных символа: * и ? Поэтому каких-то регулярных выражений нельзя особо много сделать. Попробуйте такой вариант: [vba]
[/vba] Прикладываю файл, на котором этот код работает.
У метода "Replace" только два подстановочных символа: * и ? Поэтому каких-то регулярных выражений нельзя особо много сделать. Попробуйте такой вариант: [vba]
от Вас я не увидел ничего кроме png на котором всё равно не разобрать - у меня разделитель запятая и преобразование РАБОТАЕТ - может пора правила форума почитать?, а не жаловаться на AutoCAD - почему-то я знаю как это правильно пишется, хотя ни разу в жизни не запускал
Цитата
Я хочу как-то с этим бороться с помощью VBA.
от Вас я не увидел ничего кроме png на котором всё равно не разобрать - у меня разделитель запятая и преобразование РАБОТАЕТ - может пора правила форума почитать?, а не жаловаться на AutoCAD - почему-то я знаю как это правильно пишется, хотя ни разу в жизни не запускалbuchlotnik
Karataev, то есть по сути весь код это присвоить значениям диапазона значения этого же диапазона? Тут какая-то магия? Я попробую прикрутить эту штуку чтобы посмотреть как она работает. У меня просто значения могут быть в разных столбцах и рядах (см. картинку сверху). buchlotnik, а что вы хотели увидеть? Файл? Пожалуйста. На картинке показать хотел ошибку и предложения от Excel по поводу её решения. Вручную можно щёлкнуть - преобразовать в число. Проблема решится. Как это же сделать на VBA?
Karataev, то есть по сути весь код это присвоить значениям диапазона значения этого же диапазона? Тут какая-то магия? Я попробую прикрутить эту штуку чтобы посмотреть как она работает. У меня просто значения могут быть в разных столбцах и рядах (см. картинку сверху). buchlotnik, а что вы хотели увидеть? Файл? Пожалуйста. На картинке показать хотел ошибку и предложения от Excel по поводу её решения. Вручную можно щёлкнуть - преобразовать в число. Проблема решится. Как это же сделать на VBA?fairylive
то есть по сути весь код это присвоить значениям диапазона значения этого же диапазона?
Да, в этом суть. Смысл может быть в том, что если в ячейку записывать дробное число с точкой, то такое число воспринимается Excel'ем, как число, а не как текст, даже если у дробного числа тип данных "String" (Текст).
то есть по сути весь код это присвоить значениям диапазона значения этого же диапазона?
Да, в этом суть. Смысл может быть в том, что если в ячейку записывать дробное число с точкой, то такое число воспринимается Excel'ем, как число, а не как текст, даже если у дробного числа тип данных "String" (Текст).Karataev
Допилил так. Правда заработало с 10-й попытки. Фокус в том что надо это проделать с исходным файлом извлечения СРАЗУ. А я сначала двигал столбцы и применял сортировки разные. И после этого почем-то уже не прокатывало. Метод странный но короткий))) И почему-то работает. [vba]
Допилил так. Правда заработало с 10-й попытки. Фокус в том что надо это проделать с исходным файлом извлечения СРАЗУ. А я сначала двигал столбцы и применял сортировки разные. И после этого почем-то уже не прокатывало. Метод странный но короткий))) И почему-то работает. [vba]