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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2011, 15:10   #1
cerberochek
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 39
По умолчанию Как заменить все lookup на значения?

Добрый день Уважаемые!

У меня возник к Вам вопрос:
есть у меня книга с тремя листами, на каждом листе идут вперемешку формулы lookup-ов и сумм. Собственно вопрос в том, как с помощью макроса пройти по всей книге и все lookup заменить на значения, не трогая при этом формулы сумм.

К сожалению не могу выложить свой пример, тк политика безопасности не позволяет загружать файл в инет.

Спасибо за Ваше время!
Идите и делайте, Вы всегда успеете оправдаться!
cerberochek вне форума Ответить с цитированием
Старый 14.04.2011, 16:12   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Option Explicit

Sub tt()
Dim sh As Worksheet, cc As Range

For Each sh In Worksheets
For Each cc In sh.UsedRange.Cells
If InStr(cc.Formula, "LOOKUP") > 0 Then cc.Value = cc.Value 'MsgBox cc.Address
Next
Next

End Sub
Но так заменятся на значения ВСЕ формулы, содержащие LOOKUP. Если содержащие внутри нужно оставить - анализируйте первые символы формулы.
Можно проверить работу:
Код:
If Left(cc.Formula, 9) = "=VLOOKUP(" Then MsgBox cc.Address
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 14.04.2011 в 16:16.
Hugo121 вне форума Ответить с цитированием
Старый 14.04.2011, 17:14   #3
cerberochek
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 39
По умолчанию

Спасибо за Ваш ответ. Я вот только хочу понять, то есть получается что макрос смотрит в каждую ячейку листа? И еще один вопрос: что значит Option Explicit?
Идите и делайте, Вы всегда успеете оправдаться!
cerberochek вне форума Ответить с цитированием
Старый 14.04.2011, 17:36   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да, в каждую, только не всего листа, а заполненной области... Недоработка, можно пройтись только по ячейкам с формулами, но я сейчас наизусть не помню, какие там SpecialCells...
Option Explicit заставляет объявить все переменные, тем самым оберегает от ошибок типа а<>a.

Нашёл:
Код:
On Error Resume Next
For Each sh In Worksheets
For Each cc In sh.UsedRange.SpecialCells(xlCellTypeFormulas)
On Error Resume Next потому, что если таких ячеек нет - будет ошибка.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 14.04.2011 в 17:42.
Hugo121 вне форума Ответить с цитированием
Старый 14.04.2011, 17:45   #5
cerberochek
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 39
По умолчанию

Аааа, теперь я понял) Все работает, Большое Спасибо!
Идите и делайте, Вы всегда успеете оправдаться!
cerberochek вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти все N-значения и заменить их на значения из 2-х ячеек? Smile2007 Microsoft Office Excel 10 09.12.2010 09:34
Как заменить все символы в текстовом поле на один определённый Memfis1992 Общие вопросы Delphi 3 16.06.2010 15:01
как получить значение поля грид на основе значения другого lookUp поля malayka БД в Delphi 0 21.04.2010 19:06
как присвоить все три значения вектору В и вывести его как массив столбец при вызове функции Tomoa Microsoft Office Excel 8 08.03.2010 20:42
Как подсчитать все значения в колоне aesoem БД в Delphi 5 03.07.2008 15:50