Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Написать формулу в VBA / 11 сообщений из 11, страница 1 из 1
21.09.2010, 17:13
    #36858566
Nevsky2006
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Здравствуйте всем!
Пишу:
Код: plaintext
Range("B3").FormulaR1C1 = "=SUM(R[-1]C:R[-1]C[3])"
т.е. сумма В2:Е2.
Делаю: выделил колонку С:С, добавить ячейки (добавил одну колонку)
Получаю: формулу B2:F2.
Вопрос: как добавить колонку не изменяя формулу? (т.е. чтобы осталось В2:Е2)
Мне важно в формате R1C1.
Заранее спасибо.
...
Рейтинг: 0 / 0
21.09.2010, 20:41
    #36858888
64-bit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Nevsky2006,

Код: plaintext
=SUM(INDIRECT("R[-1]C:R[-1]C[3]";FALSE))
...
Рейтинг: 0 / 0
21.09.2010, 22:03
    #36858946
Nevsky2006
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Может я не понял, но не работает.
...
Рейтинг: 0 / 0
21.09.2010, 23:12
    #36859027
64-bit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Nevsky2006Может я не понял, но не работает.В vba нужны двойные кавычки и разделитель параметров в американском стиле т.е. "," вместо привычного ";"
Код: plaintext
Range("B3").FormulaR1C1 = "=SUM(INDIRECT(""R[-1]C:R[-1]C[3]"",FALSE))"
...
Рейтинг: 0 / 0
22.09.2010, 01:58
    #36859189
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Не очень понимаю, почему формат R1C1 может иметь принципиальное значение в коде, но если формул много и есть тяжеловесные, то лучше используйте что-то в таком духе:

Код: plaintext
    Range("B3").FormulaR1C1 = "=SUM(R2C2:R2C5)"

Если нужно именно относительно ячейки ввода, то:

Код: plaintext
1.
2.
    With Range("B3")
        .FormulaR1C1 = "=SUM(" & .Offset(- 1 ).Resize(,  4 ).Address( 1 ,  1 , xlR1C1) & ")"
    End With

Функция INDIRECT(), она же ДВССЫЛ(), сделает ваши формулы летучими :)
...
Рейтинг: 0 / 0
22.09.2010, 07:40
    #36859259
Pavel Berezin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
а зачем эти англоязычные извращения вообще? Чем вам проперти Range.FormulaLocal не нравится? Или мультиязычную экселину пишете?
...
Рейтинг: 0 / 0
22.09.2010, 09:33
    #36859330
bbx1389
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Код: plaintext
1.
2.
3.
4.
Dim formula As String

formula = "=SUM(R" & Trim( 2 ) & "C" & Trim( 2 ) & ": R" & Trim( 2 ) & "C" & Trim( 5 ) & ")"

Cells( 2 ,  1 ).FormulaR1C1 = formula

так можно в цикле заполнять сразу диапазон ячеек...
...
Рейтинг: 0 / 0
22.09.2010, 14:40
    #36860138
Nevsky2006
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
Здравствуйте всем!

К 64-bit, спасибо, прямо в точку.

К KL (XL) на счет летучих - возможно, если я правильно понимаю функцию INDIRECT. Спасибо за предупреждение. Подумаю. А пока все это используется при выгрузке из Access один раз для печати, без редактирования.

К bbx1389, если есть сумма по горизонтали последовательно трех ячеек и между ними вставить(удалить) колонку(ячейку), то в ячейке с суммой формула тоже изменится, а мне как раз этого и не надо.

К Pavel Berezin Нет не мультиязычную, а с Range.FormulaLocal еще не стыкался.
...
Рейтинг: 0 / 0
22.09.2010, 19:22
    #36861036
Pavel Berezin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
авторПолучаю: формулу B2:F2.
Вопрос: как добавить колонку не изменяя формулу? (т.е. чтобы осталось В2:Е2)


самый простой вариант имхо - через формулу смещения. Чтото вроде

range("A2").formulalocal = "=сумм(смещ($B$2;0;0;1;4))" 'здесь 4 это ширина интервала B2:F2
...
Рейтинг: 0 / 0
26.09.2010, 23:56
    #36867161
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
СМЕЩ, как и ДВССЫЛ, летуча. Можно
=СУММ(B2:ИНДЕКС(B2:G2;4))
...
Рейтинг: 0 / 0
27.09.2010, 07:00
    #36867272
Pavel Berezin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написать формулу в VBA
ну если совсем нелетучую использовать, то от A1 смещение считать )))
В любом случае СМЕЩ будет работать чуток быстрее чем ДВССЫЛ.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Написать формулу в VBA / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]