![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Как заменить в строке все запятые на точку с запятой, если запятая находится не внутри скобок () или []?
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Можно, например, с помощью макроса. Выделить диапазон и выполнить макрос:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 14.07.2009 в 07:36. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Мне нужно, чтобы запятые вне скобок заменялись на ; при любом количестве скобок
|
![]() |
![]() |
![]() |
#4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
К примеру, возьмём строку (((((((;);)););););(;(;;())))
Что должно получиться в итоге? PS: Опять Вы ерунду какую-то придумываете ![]() Проще преобразовать формулу к англоязычному виду - и замена будет произведена автоматически... Код:
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Если последовательно удалять скобки с их содержимым из Вашего примера (что означает, то что заменять не надо), останется ( ; ). Далее, если эти последние скобки относятся к скобкам функции, то все остается так же. А если сначала их не рассматривать, то осталась бы просто точка с запятой. Но я говорил про замену запятых, а не точки с запятой, так что если точки с запятой есть с самого начала, заменять ничего не надо.
Причина этой "ерунды" в том, что мне в переменную нужно записать значение формулы в ячейке, напр. Ф(1; 2; 3+5*max(2,3*A1)). А в переменной точки с запятой пропадают, и оказываются только запятые Ф(1, 2, 3+5*max(2,3*A1)).. Так вот, чтобы понять, какая запятая раньше была точкой с запятой, я анализирую, не находится ли она в скобках, как напр. у функции максимума. Если нет, значит это разделитель, и мы его восстанавливаем до точки с запятой. Всего этого можно не делать, если Вы подскажете, как избежать пропадания точки с запятой при получении в строку значения Cell.Formula Последний раз редактировалось motorway; 14.07.2009 в 16:05. |
![]() |
![]() |
![]() |
#6 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Используйте FormulaLocal вместо Formula
Код:
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Спасибо. Теперь нормально, но десятичные разделители у чисел (напр. 3.5) стали теперь запятыми (3,5), чего не хотелось бы. Должно оставаться точкой, но вводить ее Эксел не позволяет. То есть когда мы вводили 3,5, получали в Formula 3.5, что и было нужно. А теперь остается 3,5
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
процедура вывода и нахождения массивов, находящихся в типизированном файле | квак | Помощь студентам | 1 | 28.04.2009 15:08 |
ЗАМЕНА | ing60 | Microsoft Office Excel | 3 | 22.04.2009 12:41 |
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL | DorianLeroy | Фриланс | 8 | 18.02.2009 18:52 |
Замена | Патрон | Общие вопросы Delphi | 6 | 05.11.2008 15:45 |
Замена | Dr.Badnezz | Общие вопросы Delphi | 11 | 23.09.2008 17:17 |