Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2012, 18:59   #1
АлександрМГ
 
Регистрация: 14.09.2012
Сообщений: 7
Восклицание Как автоматически протягивать формулы?

Всем, доброго дня. Столкнулся с проблемой, с моими навыками работы в Excel самостоятельно решить её не могу. Подскажите пожалуйста, как сделать так, чтобы формулы в диапазоне E:L автоматически протягивались как-только в диапазоне A:D появляется текстовая информация (по средству copy\past или вставляя скопированные строки целиком). Все формулы представляют собой ВПР. В вырезке из файла так нужно мне сделать в листе "ПБС" и "ФБС", формулы на этих листах почти идентичны, разница только в формулах столбца E (они лукапят разные диапазоны). Кол-во строк может варьировать от 15000 до 300000 строк. Заранее благодарен!
Вложения
Тип файла: rar Сопостовление.rar (12.3 Кб, 26 просмотров)
АлександрМГ вне форума Ответить с цитированием
Старый 17.09.2012, 08:20   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Кол-во строк может варьировать от 15000 до 300000 строк.
При таких объёмах разумнее Access использовать. Хотя можно привязаться к изменению ячейки и обновлять формулы в данной строке.

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Cells(Target.Cells(1, 1).Row, 1).FormulaLocal = "=A1"
End Sub
примерно так, только прописывайте свои формулы в свои ячейки...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 17.09.2012, 09:29   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я бы делал разово макросом на словаре и массивах (как всегда )
Ну или при переходе на эти листы обновлял информацию (подтягивал заново)
И сделать проще, и файл не распухнет, и открываться будет нормально (16*30000 ВПРов - не шутки...)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.09.2012, 09:40   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
(16*30000 ВПРов - не шутки...)
один нолик пропустил) там ситуация ещё круче)) да и для 300к строк даже макрос не будет шустрым
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 17.09.2012, 09:45   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Точно пропустил... 300к строк! Не шутки...
Тогда ВПР() вообще нереально использовать.
А макрос вполне - миллион на словаре делали за минуту, на коллекции за 11 сек.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 17.09.2012 в 09:48.
Hugo121 вне форума Ответить с цитированием
Старый 17.09.2012, 09:49   #6
АлександрМГ
 
Регистрация: 14.09.2012
Сообщений: 7
По умолчанию

Я пытался написать макрос, который бы протягивал ВПР по всей таблице, но кол-во строк постоянно меняется, а макрос постоянно протягивает до определенной строки (до той, которой в момент написания макроса протягивал). Может вы знаете как научить макрос определть до какой строки надо протягивать (это всегда нижняя граница массива)
АлександрМГ вне форума Ответить с цитированием
Старый 17.09.2012, 09:51   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Да я не спорю, что можно. Просто на Access это будет сделать правильнее и логичнее. Особенно при наличии хотя-бы 15к контрагентов...

Код:
Sub ff()
  Range("E1:L1").AutoFill Range("E1:L" & Cells(Rows.Count, 1).End(xlUp).Row)
End Sub
примерно так можно сделать автозаполнение (только тормоза на больших таблицах неизбежны)
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 17.09.2012 в 09:59.
DiemonStar вне форума Ответить с цитированием
Старый 17.09.2012, 09:54   #8
АлександрМГ
 
Регистрация: 14.09.2012
Сообщений: 7
По умолчанию

С Access я ни когда не работал, попробую поковыряться. А как научить макрос в Excele определять нижнюю границу протягивания формул, если обьём данных не такой большой?
АлександрМГ вне форума Ответить с цитированием
Старый 17.09.2012, 10:02   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Забудьте про формулы на таких объёмах.
Про последнюю строку - вариантов много. Самое лучшее - погуглить по "определение последней строки Excel".
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.09.2012, 10:03   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
С Access я ни когда не работал, попробую поковыряться.
Тогда лучше сделайте для начала вариант Hugo - т.е. при открытии/по кнопке заполнять свободные значения макросом из словаря. Это будет быстрее всего.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как обновить значения в форме автоматически Оленька______87 Microsoft Office Excel 3 22.03.2012 19:40
как ввести матрицу автоматически? Julichka1k Помощь студентам 15 18.12.2011 20:07
Как сортировать таблицу автоматически Sergey2 SQL, базы данных 5 16.09.2010 06:55
Как сделать автоматически? Timo55 Microsoft Office Excel 11 01.09.2010 12:36
Как автоматически пометить все checkbox ? Aelxbor777 БД в Delphi 3 21.02.2010 00:58