powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставить ячейки по условию
25 сообщений из 25, страница 1 из 1
Вставить ячейки по условию
    #35053674
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, пожалуйста, автоматизировать следующие мои действия в Эксель (макросом):
1. Копирую ячейку
2. при помощи Правка- найти ищу все ячейки удовлетворяющие условию
3. Выделяю все эти ячейки в окне поиска
4. Правой кнопкой мыши по выделению - вставить
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35053703
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дай условие и то, что ты вставляешь......
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35054574
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikДай условие и то, что ты вставляешь......
Несколько примеров привел.
Они, по большому счету, все однотипные.

Пробовал макрорекордером записать поиск выделение ячеек - не получилось
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35054878
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, что вы описали можно сделать и без поиска, обычным распространением формулы вправо(метод FillRight ), если, конечно, заранее известен диапазон распространения. Если диапазон распространения не известен, то скажите как его можно найти, может проще определить границы диапазона, чем искать подстроку в формулах.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055500
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikВсё, что вы описали можно сделать и без поиска, обычным распространением формулы вправо(метод FillRight ), если, конечно, заранее известен диапазон распространения. Если диапазон распространения не известен, то скажите как его можно найти, может проще определить границы диапазона, чем искать подстроку в формулах.
Чё то плохо я объясняю...
Диапазон распространения я нахожу именно поиском...
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055554
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, тогда приведите реальный пример, когда нужно это делать именно поиском... т.е. нельзя просто протянуть формулу вправо...
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055649
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikХорошо, тогда приведите реальный пример, когда нужно это делать именно поиском... т.е. нельзя просто протянуть формулу вправо...
на листе "Проба" нужно поменять формулы с "=Лист1!..." на "=Лист2!..."
Изменить сломанные ссылки
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055758
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае поможет обыная замена. Ищем "=Лист1!", заменить на "=Лист2!", область поиска - формулы
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055776
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikВ данном случае поможет обыная замена. Ищем "=Лист1!", заменить на "=Лист2!", область поиска - формулы
ага.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055797
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikВ данном случае поможет обыная замена. Ищем "=Лист1!", заменить на "=Лист2!", область поиска - формулы
Только гораздо быстрее вставить ячеки целиком и обновить, а не пробегаться по всей формуле (около 900 знаков) в каждой ячейки.

Как программно выделить нужный мне диапазон по условию.
Наподобие того, как делает правка найти и поторм выделить.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055835
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему нельзя воспользоваться кнёпочкой "Заменить все" ?
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055851
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лист1 на Лист2 поменять в одной ячейки не сложно.
Допустим, на изменение формулы и обновления связи мой Эксель тратит 0,5 сек. (субъективно), на изменение 12000 формул потребуется 1,5 часа. + время на просмотр других ячеек.

Вставка в выделенный диапазон скопированной формулы составляет не более 1,5 мин.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055868
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikА почему нельзя воспользоваться кнёпочкой "Заменить все" ?
Потому, что Заменить все - это цикл. У меня очень долгий.
а вставка ячеки в диапазон на порядок быстрее
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055886
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не знаю о каких 1,5 часах вы говорите..? У меня замена всех ваших формул была произведена где-то за 1-2 секунды.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35055963
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Nikя не знаю о каких 1,5 часах вы говорите..? У меня замена всех ваших формул была произведена где-то за 1-2 секунды. Пример формулы:
=Сервер\папка\файл1!лист1А1+Сервер\папка\файл2!лист1А1+Сервер\папка\файл3!лист1А1+Сервер\папка\файл4!лист1А1+Сервер\папка\файл5!лист1А1+Сервер\папка\файл6!лист1А1+Сервер\папка\файл7!лист1А1+Сервер\папка\файл8!лист1А1+Сервер\папка\файл9!лист1А1+Сервер\папка\файл10!лист1А1+Сервер\папка\файл11!лист1А1+Сервер\папка\файл12!лист1А1+Сервер\папка\файл13!лист1А1+Сервер\папка\файл14!лист1А1+Сервер\папка\файл15!лист1А1+Сервер\папка\файл16!лист1А1+Сервер\папка\файл17!лист1А1+Сервер\папка\файл18!лист1А1+Сервер\папка\файл20!лист1А1.
По другому прошу не предлагать

Скоро, может быть, откажемся от такого, перейдя на СУБД, ну а пока так.

Вопрос основной:
Как программно выделить нужный мне диапазон по условию?
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35056061
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Что значит выделить ? Я так понимаю это выполнить Range().Select, либо сослаться на конкретный Range() на одном из листов в одном из файлов.
2. Задайте конкретное условие для данного примера, по которому искать этот Range().
Совершенно непонятно что вам надо и для какой цели. От конечной цели может зависеть вариант её реализации.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35056084
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Nik1. Что значит выделить ? Я так понимаю это выполнить Range().Select, либо сослаться на конкретный Range() на одном из листов в одном из файлов.
2. Задайте конкретное условие для данного примера, по которому искать этот Range().
Совершенно непонятно что вам надо и для какой цели. От конечной цели может зависеть вариант её реализации.
Да.
Пусть будет Range().Select, где Range() - диапазон ячеек, которые содержат, например, выражение "='\\"
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35056125
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я совершенно перестал понимать условие задачи...
Либо вы подробно всё рассказываете ещё раз, либо я пасс :-)
Какое ещё "='\\" ?? Где его искать ?
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35057356
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikЯ совершенно перестал понимать условие задачи...
Либо вы подробно всё рассказываете ещё раз, либо я пасс :-)
Какое ещё "='\\" ?? Где его искать ?
Ну только остается попросить прощения за то, что отнял у вас время.
Оченнь плохо объясняю.
Простите
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35057402
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде нашел то, что мне нада... :-))
http://www.sql.ru/forum/actualthread.aspx?tid=243878&hl=%e2%fb%e4%e5%eb%e8%f2%fc+%ff%f7%e5%e9%ea%e8
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Option Explicit

Function Test(FReg As Range, FStr As String) As Range
Dim ResR As Range, sAr As Range, firstAddress As String
With FReg
  Set sAr = .Find(FStr, LookIn:=xlValues, LookAt:=xlWhole)
  If Not sAr Is Nothing Then
    firstAddress = sAr.Address
    Do
      If ResR Is Nothing Then
        Set ResR = sAr
      Else
        Set ResR = Union(ResR, sAr)
      End If
      Set sAr = .FindNext(sAr)
    Loop While Not sAr Is Nothing And sAr.Address <> firstAddress
  End If
End With
Set Test = ResR
End Function

Sub Test1()
Dim a As Range
  Set a = Test(Range("A1:BA10"), "2")
  If Not a Is Nothing Then a.Select
End Sub
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35058421
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все равно ничего не понимаю. Если целью всего этого будет замена, то почему сразу нельзя воспользоваться функцией "Заменить все". И потом, я так понял, что искать надо именно в формулах.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35058923
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@NikВсе равно ничего не понимаю. Если целью всего этого будет замена, то почему сразу нельзя воспользоваться функцией "Заменить все".
Не, ну чё, я совсем что ли тупой? Или толком объяснить не могу?
"Заменить все" как действует?
Эксель начиная с ячейки A1 по строкам заходит в каждую и просматиривает посимвольно в ее содержимом (до 1024 знака) заданные сочетания. При находжении соответствия меняет найденные символы на необходимые. Потом ему ну очень нужно вычислить формулы и он старательно обращается к закрытым файлам. Даже при отключенном автоматическом пересчете формул. Ему же нужно проверить что новый путь действительно существует.
Я не прав?

Если это все происходит в одном файле или когда открыты все связанные файлы, когда все данные находятся в оперативной памяти компа, так и не вопрос, делается все быстро (1-2 сек).

Если мы используем найти и выделить, то не происходит долгой, как в первом случае, процедуры обращения к закрытым файлам после каждой измененной ячеки (а может и после каждого изменения внутри одной ячейки). Мы просто ищем, а не заменяем.
Находим и выделяем нужные ячейки за 1-2 сек. Потом вставляем и эксель начинает обновлять за несколько секунд все свои ссылки как при открытии файла (наверняка при этом используется другая внутренная экселевская метода обновления)
@Nik И потом, я так понял, что искать надо именно в формулах.Что касается поиска в формулах, то в вышеприведенном коде можно изменить этот аргумент
Код: plaintext
LookIn:=xlValues на LookIn:=xlFormulas
и он начинает искать символы в формулах. Одна незадача, ищет он их по английски. То есть если формула начинается с "=Если(", нужно искать "=IF(". Ну и соответственно все знаки припенания, разделители и проч.
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35059943
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Nik, ты со мной не согласен?
или я, как обычно, не корректно пищу?
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35068455
@Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь всё ясно. Наверное ты прав.
Тогда следи за этим топиком, тут будет ещё более интересное решение, а возможно и не одно ;-)
...
Рейтинг: 0 / 0
Вставить ячейки по условию
    #35068486
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Nikследи за этим топиком, тут будет ещё более интересное решение, а возможно и не одно ;-)

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


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