Есть файл в котором несколько страниц и на каждой таблица с данными. Макрос делает вычисления для каждой страницы и результат записывает на новую страницу. После этого в определенный диапазон пользователь должен вставить таблицу с названием и с числом. Таблица результата вычислений может быть разной по размерам и тут загвоздка. Нужно функцией ВПР() выбрать с таблицы, которую вставил пользователь, значение по названию.
Так как размеры таблицы динамически изменяются в зависимости от количества продуктов и количества страниц файла, то формулу Vlookup() могу записать так: [vba]
Код
Cells(e + 1, sh + 3).Formula = "=Vlookup(Cells(e + 1, 1), Range(Cells(2, sh + 5), Cells(42, sh + 6)), 2, False)"
[/vba] и в Excel'e получаю
Код
=ВПР(Cells(e + 1); Range(Cells(2; sh + 5); Cells(42; sh + 6)); 2; ЛОЖЬ)
. Как сделать, чтобы вместо Cells(e + 1) был конкретный адресс ячейки/диапазона и возможно ли такое вообще.
Файл не прилагаю, так как информация носит больше общий характер, но если без него никак - могу выложить.
Есть файл в котором несколько страниц и на каждой таблица с данными. Макрос делает вычисления для каждой страницы и результат записывает на новую страницу. После этого в определенный диапазон пользователь должен вставить таблицу с названием и с числом. Таблица результата вычислений может быть разной по размерам и тут загвоздка. Нужно функцией ВПР() выбрать с таблицы, которую вставил пользователь, значение по названию.
Так как размеры таблицы динамически изменяются в зависимости от количества продуктов и количества страниц файла, то формулу Vlookup() могу записать так: [vba]
Код
Cells(e + 1, sh + 3).Formula = "=Vlookup(Cells(e + 1, 1), Range(Cells(2, sh + 5), Cells(42, sh + 6)), 2, False)"
[/vba] и в Excel'e получаю
Код
=ВПР(Cells(e + 1); Range(Cells(2; sh + 5); Cells(42; sh + 6)); 2; ЛОЖЬ)
. Как сделать, чтобы вместо Cells(e + 1) был конкретный адресс ячейки/диапазона и возможно ли такое вообще.
Файл не прилагаю, так как информация носит больше общий характер, но если без него никак - могу выложить.dadmarat
dadmarat, Если Вы все равно пользуетесь макросом, то зачем Вам лишний раз нагружать лист формулами? Сделайте сразу расчет внутри макроса и вставьте на лист только значения [vba]
Код
aa = WorksheetFunction.VLookup(Cells(e + 1, 1), Range(Cells(2, sh + 5), Cells(42, sh + 6)), 2, 0) Cells(e + 1, sh + 3).Value = aa
[/vba]
dadmarat, Если Вы все равно пользуетесь макросом, то зачем Вам лишний раз нагружать лист формулами? Сделайте сразу расчет внутри макроса и вставьте на лист только значения [vba]
Код
aa = WorksheetFunction.VLookup(Cells(e + 1, 1), Range(Cells(2, sh + 5), Cells(42, sh + 6)), 2, 0) Cells(e + 1, sh + 3).Value = aa
_Boroda_, потому что после вычислений и создания таблицы пользователь должен ввести дополнительные данные, которые влияют на вычисление искомого значения. У каждого продукта есть свой показатель, изменив долю продукта пользователь может сразу увидеть результат без запуска макроса.
_Boroda_, потому что после вычислений и создания таблицы пользователь должен ввести дополнительные данные, которые влияют на вычисление искомого значения. У каждого продукта есть свой показатель, изменив долю продукта пользователь может сразу увидеть результат без запуска макроса.dadmarat
---------------- I can do it! ----------------
Сообщение отредактировал dadmarat - Вторник, 24.12.2013, 20:59