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

Вход

Регистрация

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

 

= Мир MS Excel/Можно ли формулу написанную в VBA, закрепить $ к ячейке? - Мир MS Excel

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

Excel 2007, 2013
Добрый день.
Коротко - я заношу формулу в ячейки за счет циклов. Формула выглядит вот так.
Однако, бывают ситуации, когда нужно строку копирнуть и вставить ниже и тут некоторые формулы плывут, без закрепленного символа $
[vba]
Код
                             
Cells(iRow, iCol).Select ' ЗАНОСИМ ФОРМУЛУ В КОЛОНКУ
Selection.FormulaR1C1 = "=IF(AND(R[0]C[" & iCol - (iCol + iCol - 8) & "]>0,R[" & iRow - (iRow - 12 + iRow + 5) & "]C[-6]>0),(R[0]C[" & (iCol - iCol - 1) & "]*30/R[" & iRow - (iRow - 12 + iRow + 5) & "]C[-6])*R[0]C[" & iCol - (iCol + iCol - 8) & "]/100,0)"
[/vba]

можно ли как то закрепить формулу, в макросе??


О_о ...и так можно было?
 
Ответить
СообщениеДобрый день.
Коротко - я заношу формулу в ячейки за счет циклов. Формула выглядит вот так.
Однако, бывают ситуации, когда нужно строку копирнуть и вставить ниже и тут некоторые формулы плывут, без закрепленного символа $
[vba]
Код
                             
Cells(iRow, iCol).Select ' ЗАНОСИМ ФОРМУЛУ В КОЛОНКУ
Selection.FormulaR1C1 = "=IF(AND(R[0]C[" & iCol - (iCol + iCol - 8) & "]>0,R[" & iRow - (iRow - 12 + iRow + 5) & "]C[-6]>0),(R[0]C[" & (iCol - iCol - 1) & "]*30/R[" & iRow - (iRow - 12 + iRow + 5) & "]C[-6])*R[0]C[" & iCol - (iCol + iCol - 8) & "]/100,0)"
[/vba]

можно ли как то закрепить формулу, в макросе??

Автор - lopuxi
Дата добавления - 02.06.2015 в 18:16
KSV Дата: Вторник, 02.06.2015, 18:52 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
если правильно понял ваше "закрепить формулу, в макросе", то первый вариант:
[vba]
Код
' абсолютная ссылка на строку
Cells(iRow, iCol).FormulaR1C1 = "=IF(AND(R" & iRow & "C[" & iCol - 8 & "]>0,R" & iRow & "C[-6]>0),(R" & iRow & "C[-1]*30/R" & iRow & "C[-6])*R" & iRow & "C[" & iCol - 8 & "]/100,0)"

' относительная ссылка на строку
Cells(iRow, iCol).FormulaR1C1 = "=IF(AND(RC[" & iCol - 8 & "]>0,RC[-6]>0),(RC[-1]*30/RC[-6])*RC[" & iCol - 8 & "]/100,0)"
[/vba]

[p.s.]iCol - (iCol + iCol - 8) сокращается до iCol - 8
iRow - (iRow - 12 + iRow + 5) сокращается до iRow - 7
(iCol - iCol - 1) всегда равно -1
вместо R[0] и C[0] можно писать просто R и C[/p.s.]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 02.06.2015, 19:00
 
Ответить
Сообщениеесли правильно понял ваше "закрепить формулу, в макросе", то первый вариант:
[vba]
Код
' абсолютная ссылка на строку
Cells(iRow, iCol).FormulaR1C1 = "=IF(AND(R" & iRow & "C[" & iCol - 8 & "]>0,R" & iRow & "C[-6]>0),(R" & iRow & "C[-1]*30/R" & iRow & "C[-6])*R" & iRow & "C[" & iCol - 8 & "]/100,0)"

' относительная ссылка на строку
Cells(iRow, iCol).FormulaR1C1 = "=IF(AND(RC[" & iCol - 8 & "]>0,RC[-6]>0),(RC[-1]*30/RC[-6])*RC[" & iCol - 8 & "]/100,0)"
[/vba]

[p.s.]iCol - (iCol + iCol - 8) сокращается до iCol - 8
iRow - (iRow - 12 + iRow + 5) сокращается до iRow - 7
(iCol - iCol - 1) всегда равно -1
вместо R[0] и C[0] можно писать просто R и C[/p.s.]

Автор - KSV
Дата добавления - 02.06.2015 в 18:52
Roman777 Дата: Среда, 03.06.2015, 09:53 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Либо я не правильно знаю арифметику, либо:
iCol - (iCol + iCol - 8) упрощается всё-таки так: 8- iCol
iRow - (iRow - 12 + iRow + 5) упрощается до: 7 -iRow


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Либо я не правильно знаю арифметику, либо:
iCol - (iCol + iCol - 8) упрощается всё-таки так: 8- iCol
iRow - (iRow - 12 + iRow + 5) упрощается до: 7 -iRow

Автор - Roman777
Дата добавления - 03.06.2015 в 09:53
KSV Дата: Среда, 03.06.2015, 10:31 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Roman777, ну, естественно! (спасибо, что поправили) :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Среда, 03.06.2015, 10:32
 
Ответить
СообщениеRoman777, ну, естественно! (спасибо, что поправили) :)

Автор - KSV
Дата добавления - 03.06.2015 в 10:31
lopuxi Дата: Среда, 03.06.2015, 10:44 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
да, так закрепляет, но возможность закрепить таким способом есть не везде.

iCol - (iCol + iCol - 8) сокращается до iCol - 8 = по другому ни как, первично iCol=23 по циклу увеличивается на +16, так 12 раз и с каждым циклом, нужно попадать в нужную ячейку. Может быть можно упростить) но и так работает :-)

iRow - (iRow - 12 + iRow + 5) сокращается до iRow - 7 = тут похожая история и тут не получается закрепить. Может я что-то не так понял, но если я оставлю "& iRow &", то я не могу закрепиться в той ячейке, в которой мне необходимо.

я прикрепил картинку, где примером указал, место куда заносится формула и ячейку, на которую ссылается. Нам нужно от ячейки с формулой подняться на 5 ячеек вверх и - 6 ячеек уйти влево и закрепить ее.
К сообщению приложен файл: 4201474.png (18.2 Kb)


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Среда, 03.06.2015, 11:29
 
Ответить
Сообщениеда, так закрепляет, но возможность закрепить таким способом есть не везде.

iCol - (iCol + iCol - 8) сокращается до iCol - 8 = по другому ни как, первично iCol=23 по циклу увеличивается на +16, так 12 раз и с каждым циклом, нужно попадать в нужную ячейку. Может быть можно упростить) но и так работает :-)

iRow - (iRow - 12 + iRow + 5) сокращается до iRow - 7 = тут похожая история и тут не получается закрепить. Может я что-то не так понял, но если я оставлю "& iRow &", то я не могу закрепиться в той ячейке, в которой мне необходимо.

я прикрепил картинку, где примером указал, место куда заносится формула и ячейку, на которую ссылается. Нам нужно от ячейки с формулой подняться на 5 ячеек вверх и - 6 ячеек уйти влево и закрепить ее.

Автор - lopuxi
Дата добавления - 03.06.2015 в 10:44
KSV Дата: Среда, 03.06.2015, 12:14 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Нам нужно от ячейки с формулой подняться на 5 ячеек вверх и - 6 ячеек уйти влево

Ну, для этой ячейки по рисунку понятно, а для остальных ячеек? Из них вам тоже нужно ссылаться НА ТУ ЖЕ ячейку со значением 20? Если да, то нет смысла высчитывать ее адрес в формуле - просто назначьте ей имя (диспетчер имен можно вызвать по Ctrl+F3), а в формуле вместо ее адреса используйте ее имя (см. вложенный файл)
К сообщению приложен файл: 111.xlsx (8.1 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Нам нужно от ячейки с формулой подняться на 5 ячеек вверх и - 6 ячеек уйти влево

Ну, для этой ячейки по рисунку понятно, а для остальных ячеек? Из них вам тоже нужно ссылаться НА ТУ ЖЕ ячейку со значением 20? Если да, то нет смысла высчитывать ее адрес в формуле - просто назначьте ей имя (диспетчер имен можно вызвать по Ctrl+F3), а в формуле вместо ее адреса используйте ее имя (см. вложенный файл)

Автор - KSV
Дата добавления - 03.06.2015 в 12:14
lopuxi Дата: Среда, 03.06.2015, 12:19 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Хм, интересный вариант) только я не понял, как имя ячейке задать? Просто когда в твоей книге нажал Ctrl+F3, то имя ячейки было USD, а когда я это сделал в своей, то в открывшейся табличке было просто пусто.


О_о ...и так можно было?
 
Ответить
СообщениеХм, интересный вариант) только я не понял, как имя ячейке задать? Просто когда в твоей книге нажал Ctrl+F3, то имя ячейки было USD, а когда я это сделал в своей, то в открывшейся табличке было просто пусто.

Автор - lopuxi
Дата добавления - 03.06.2015 в 12:19
KSV Дата: Среда, 03.06.2015, 12:26 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
в диспетчере имен или в поле "Имя" (см. скриншот)
диспетчер имен можно вызвать по Ctrl+F3

К сообщению приложен файл: 0309064.png (12.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениев диспетчере имен или в поле "Имя" (см. скриншот)
диспетчер имен можно вызвать по Ctrl+F3


Автор - KSV
Дата добавления - 03.06.2015 в 12:26
lopuxi Дата: Среда, 03.06.2015, 12:40 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
тут понятно, теперь вопрос технического плана.
Но я сейчас подумал, данный вариант наверное не подойдет.

Я не смогу потом к этому имени прибавлять N-е число, для того что бы, следующим шагом цикла, формула уже строилась и обращалась к следующему значению?

Я на скриншоте показал шаг цикла, когда он переходит к написанию следующих формул, которые обращаются к новому значению.

Я бы прислал саму табличку... но она здоровая и сложно будет понять что нажать, что бы данную команду с формулами запустить...
К сообщению приложен файл: 0895293.png (15.1 Kb)


О_о ...и так можно было?
 
Ответить
Сообщениетут понятно, теперь вопрос технического плана.
Но я сейчас подумал, данный вариант наверное не подойдет.

Я не смогу потом к этому имени прибавлять N-е число, для того что бы, следующим шагом цикла, формула уже строилась и обращалась к следующему значению?

Я на скриншоте показал шаг цикла, когда он переходит к написанию следующих формул, которые обращаются к новому значению.

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

Автор - lopuxi
Дата добавления - 03.06.2015 в 12:40
KSV Дата: Среда, 03.06.2015, 13:06 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Я не смогу потом к этому имени прибавлять N-е число, для того что бы, следующим шагом цикла, формула уже строилась и обращалась к следующему значению?

без файла сложно понять, что у вас будет "следующим значением"...

Я бы прислал саму табличку... но она здоровая

а зачем ВСЯ таблица? оставьте 10 строчек...

Я на скриншоте показал шаг цикла

т.е., цикл у вас по столбцам, с шагом 17? тогда просто пишите формулу с абсолютной ссылкой по строке и относительной по столбцу. я так понимаю, формула должны быть протягиваемой вниз? (см. вложенный файл)
К сообщению приложен файл: 2515766.xlsm (15.5 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Я не смогу потом к этому имени прибавлять N-е число, для того что бы, следующим шагом цикла, формула уже строилась и обращалась к следующему значению?

без файла сложно понять, что у вас будет "следующим значением"...

Я бы прислал саму табличку... но она здоровая

а зачем ВСЯ таблица? оставьте 10 строчек...

Я на скриншоте показал шаг цикла

т.е., цикл у вас по столбцам, с шагом 17? тогда просто пишите формулу с абсолютной ссылкой по строке и относительной по столбцу. я так понимаю, формула должны быть протягиваемой вниз? (см. вложенный файл)

Автор - KSV
Дата добавления - 03.06.2015 в 13:06
lopuxi Дата: Среда, 03.06.2015, 18:38 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Да, все таки все возможно. И вы кстати правильно поняли задачу которую нужно решить.
Я разобрался, формулу поправил, в местах которых нужно было.

Спасибо! )


О_о ...и так можно было?
 
Ответить
СообщениеДа, все таки все возможно. И вы кстати правильно поняли задачу которую нужно решить.
Я разобрался, формулу поправил, в местах которых нужно было.

Спасибо! )

Автор - lopuxi
Дата добавления - 03.06.2015 в 18:38
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Можно ли формулу написанную в VBA, закрепить $ к ячейке? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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