Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Формула с трехмерной ссылкой в макросе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формула с трехмерной ссылкой в макросе (Макросы/Sub)
Формула с трехмерной ссылкой в макросе
Demura Дата: Пятница, 08.08.2014, 23:28 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день. Нужна помощь в правильном написании формулы, в которой одно из значений копируется из одной и той же ячейки определенного листа одной книги, а макрос вставит в таблицу.Описал коряво, но как то не приходит в голову изобразить...
В приложении есть файл примера. Суть работы такова... Создается инвойс, далее запускается макрос (нажатием кнопки 'в таблицу') и формируется строка со значениями из определенных ячеек (L2:Q2), далее она копируется в сводную таблицу на листе balans. Но еще необходимо, чтобы в ячейку I5 вставилось значение ячейки Q4 с листа с названием соответствующим значению ячейки A5 (1,2,3... и т.д.). На данный момент для теста реализована вставка значения ячейки B5:
Module8
Range("I5").Select
ActiveCell.FormulaR1C1 = "=R[0]C[-7]+7"
т.е. вместо R[0]C[-7] надо вставить значение ячейки Q4 из листа 1 (но листы меняются! названия листов будет соответствовать значению ячейки А5).
В итоге в ячейке I5 должна быть формула - сумма значения Q4 из определенного листа и 7.
Необходима именно формула, чтобы при изменении значения на листе, значения в таблице обновлялось.

К сожалению размер файла слишком большой, порезал что мог и архивировал. Надеюсь, если мою проблему решить можно, то того что осталось хватит...
К сообщению приложен файл: 2014.zip (76.5 Kb)
 
Ответить
СообщениеДобрый день. Нужна помощь в правильном написании формулы, в которой одно из значений копируется из одной и той же ячейки определенного листа одной книги, а макрос вставит в таблицу.Описал коряво, но как то не приходит в голову изобразить...
В приложении есть файл примера. Суть работы такова... Создается инвойс, далее запускается макрос (нажатием кнопки 'в таблицу') и формируется строка со значениями из определенных ячеек (L2:Q2), далее она копируется в сводную таблицу на листе balans. Но еще необходимо, чтобы в ячейку I5 вставилось значение ячейки Q4 с листа с названием соответствующим значению ячейки A5 (1,2,3... и т.д.). На данный момент для теста реализована вставка значения ячейки B5:
Module8
Range("I5").Select
ActiveCell.FormulaR1C1 = "=R[0]C[-7]+7"
т.е. вместо R[0]C[-7] надо вставить значение ячейки Q4 из листа 1 (но листы меняются! названия листов будет соответствовать значению ячейки А5).
В итоге в ячейке I5 должна быть формула - сумма значения Q4 из определенного листа и 7.
Необходима именно формула, чтобы при изменении значения на листе, значения в таблице обновлялось.

К сожалению размер файла слишком большой, порезал что мог и архивировал. Надеюсь, если мою проблему решить можно, то того что осталось хватит...

Автор - Demura
Дата добавления - 08.08.2014 в 23:28
gling Дата: Суббота, 09.08.2014, 17:22 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Цитата
еще необходимо, чтобы в ячейку I5 вставилось значение ячейки Q4 с листа с названием
Вставить с нужного листа по Вашему описанию можно так
Код
Sheets("balans).Range("I5") = Sheets(Range("A5").Value).Range("Q4").Value + 7
и
Цитата
В итоге в ячейке I5 должна быть формула
не понятно значение или формула. Если хотите в I5 записать формулу так запишите зачем её копировать? А в общем из разъяснений ничего не понял что Вы хотите.


ЯД-41001506838083

Сообщение отредактировал gling - Суббота, 09.08.2014, 17:26
 
Ответить
Сообщение
Цитата
еще необходимо, чтобы в ячейку I5 вставилось значение ячейки Q4 с листа с названием
Вставить с нужного листа по Вашему описанию можно так
Код
Sheets("balans).Range("I5") = Sheets(Range("A5").Value).Range("Q4").Value + 7
и
Цитата
В итоге в ячейке I5 должна быть формула
не понятно значение или формула. Если хотите в I5 записать формулу так запишите зачем её копировать? А в общем из разъяснений ничего не понял что Вы хотите.

Автор - gling
Дата добавления - 09.08.2014 в 17:22
Gustav Дата: Суббота, 09.08.2014, 18:28 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2706
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Формула для ячейки I5 листа balans:
Код
=ДВССЫЛ(A5&"!Q4")+7


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеФормула для ячейки I5 листа balans:
Код
=ДВССЫЛ(A5&"!Q4")+7

Автор - Gustav
Дата добавления - 09.08.2014 в 18:28
Demura Дата: Воскресенье, 10.08.2014, 13:02 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
gling, Gustav,
Спасибо. Но в обоих случаях выдает ошибку Compile error: Expected: list separator or )

Объяснение мое видимо действительно корявое... Попробую еще раз...
В ячейки I5 должна вставляться формула типа Х+7, где Х - значение ячейки Q4 листа с таким же именем как значение поля А5 листа balans.
ниже как работает макрос на этапе вставки строки:
Range("L2:Q2").Copy - на текущем листе копируются значения ячеек L2:Q2
Sheets("balans").Select - переходим на лист balans
Range("A5").Select
Range("A5").PasteSpecial Paste:=xlValues - вставляем значения с ячейки А5 до F5
Range("G5").Select - в ячейку G5
ActiveCell.FormulaR1C1 = "=-R[0]C[-1]+R[0]C[-2]" - вставляем формулу (-E5+F5)
Range("I5").Select - в ячейку I5
ActiveCell.Formula = ???+7 - вставляем формулу ((Q4 c листа с именем=ячейки А5)+7)

Зачем это нужно:
В ячейке Q4 каждого листа (кроме balans) записывается дата согласованного акта, оплата должна происходить через 7 дней. Надо, чтобы в ячейке I5 выводилась дата оплаты. При этом ячейки Q4 могут меняться уже после вставки строки на листе balans, поэтому важно чтобы в I5 была формула а не значение (я так понимаю, тогда итог будет также обновляться)
имена листов с ячейкой Q4 - 1,2,3...999
значения ячейки A5 листа balans - 1,2,3...999 (соответственно)
 
Ответить
Сообщениеgling, Gustav,
Спасибо. Но в обоих случаях выдает ошибку Compile error: Expected: list separator or )

Объяснение мое видимо действительно корявое... Попробую еще раз...
В ячейки I5 должна вставляться формула типа Х+7, где Х - значение ячейки Q4 листа с таким же именем как значение поля А5 листа balans.
ниже как работает макрос на этапе вставки строки:
Range("L2:Q2").Copy - на текущем листе копируются значения ячеек L2:Q2
Sheets("balans").Select - переходим на лист balans
Range("A5").Select
Range("A5").PasteSpecial Paste:=xlValues - вставляем значения с ячейки А5 до F5
Range("G5").Select - в ячейку G5
ActiveCell.FormulaR1C1 = "=-R[0]C[-1]+R[0]C[-2]" - вставляем формулу (-E5+F5)
Range("I5").Select - в ячейку I5
ActiveCell.Formula = ???+7 - вставляем формулу ((Q4 c листа с именем=ячейки А5)+7)

Зачем это нужно:
В ячейке Q4 каждого листа (кроме balans) записывается дата согласованного акта, оплата должна происходить через 7 дней. Надо, чтобы в ячейке I5 выводилась дата оплаты. При этом ячейки Q4 могут меняться уже после вставки строки на листе balans, поэтому важно чтобы в I5 была формула а не значение (я так понимаю, тогда итог будет также обновляться)
имена листов с ячейкой Q4 - 1,2,3...999
значения ячейки A5 листа balans - 1,2,3...999 (соответственно)

Автор - Demura
Дата добавления - 10.08.2014 в 13:02
Gustav Дата: Воскресенье, 10.08.2014, 13:55 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2706
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
ActiveCell.Formula = ???+7 - вставляем формулу ((Q4 c листа с именем=ячейки А5)+7)

[vba]
Код
ActiveCell.Formula = "=INDIRECT(A5&""!Q4"")+7"
[/vba]
ДВССЫЛ на русском означает INDIRECT на международном. Надо было просто на кнопочку "Перевод" нажать перед формулой в моем предыдущем посте.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Воскресенье, 10.08.2014, 13:59
 
Ответить
Сообщение
ActiveCell.Formula = ???+7 - вставляем формулу ((Q4 c листа с именем=ячейки А5)+7)

[vba]
Код
ActiveCell.Formula = "=INDIRECT(A5&""!Q4"")+7"
[/vba]
ДВССЫЛ на русском означает INDIRECT на международном. Надо было просто на кнопочку "Перевод" нажать перед формулой в моем предыдущем посте.

Автор - Gustav
Дата добавления - 10.08.2014 в 13:55
Demura Дата: Воскресенье, 10.08.2014, 14:39 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Gustav,
Здорово! Огромное спасибо! Все работает именно так как и задумывалось. Теперь посмотрю где еще эту функцию можно использовать!
 
Ответить
СообщениеGustav,
Здорово! Огромное спасибо! Все работает именно так как и задумывалось. Теперь посмотрю где еще эту функцию можно использовать!

Автор - Demura
Дата добавления - 10.08.2014 в 14:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формула с трехмерной ссылкой в макросе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!