Excel как программно вставить формулу

Вставка формулы со ссылками в стиле A1 и R1C1 в ячейку (диапазон) из кода VBA Excel. Свойства Range.FormulaLocal и Range.FormulaR1C1Local.

Свойство Range.FormulaLocal

FormulaLocal — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле A1.

В качестве примера будем использовать диапазон A1:E10, заполненный числами, которые необходимо сложить построчно и результат отобразить в столбце F:

Примеры вставки формул суммирования в ячейку F1:

Range(«F1»).FormulaLocal = «=СУММ(A1:E1)»

Range(«F1»).FormulaLocal = «=СУММ(A1;B1;C1;D1;E1)»

Пример вставки формул суммирования со ссылками в стиле A1 в диапазон F1:F10:

Sub Primer1()

Dim i As Byte

    For i = 1 To 10

        Range(«F» & i).FormulaLocal = «=СУММ(A» & i & «:E» & i & «)»

    Next

End Sub

В этой статье я не рассматриваю свойство Range.Formula, но если вы решите его применить для вставки формулы в ячейку, используйте англоязычные функции, а в качестве разделителей аргументов — запятые (,) вместо точек с запятой (;):

Range(«F1»).Formula = «=SUM(A1,B1,C1,D1,E1)»

После вставки формула автоматически преобразуется в локальную (на языке пользователя).

Свойство Range.FormulaR1C1Local

FormulaR1C1Local — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле R1C1.

Формулы со ссылками в стиле R1C1 можно вставлять в ячейки рабочей книги Excel, в которой по умолчанию установлены ссылки в стиле A1. Вставленные ссылки в стиле R1C1 будут автоматически преобразованы в ссылки в стиле A1.

Примеры вставки формул суммирования со ссылками в стиле R1C1 в ячейку F1 (для той же таблицы):

‘Абсолютные ссылки в стиле R1C1:

Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1:R1C5)»

Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1;R1C2;R1C3;R1C4;R1C5)»

‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам:

Range(«F1»).FormulaR1C1Local = «=СУММ(RC1:RC5)»

Range(«F1»).FormulaR1C1Local = «=СУММ(RC1;RC2;RC3;RC4;RC5)»

‘Относительные ссылки в стиле R1C1:

Range(«F1»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])»

Range(«F2»).FormulaR1C1Local = «=СУММ(RC[-5];RC[-4];RC[-3];RC[-2];RC[-1])»

Пример вставки формул суммирования со ссылками в стиле R1C1 в диапазон F1:F10:

‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам:

Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC1:RC5)»

‘Относительные ссылки в стиле R1C1:

Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])»

Так как формулы с относительными ссылками и относительными по строкам ссылками в стиле R1C1 для всех ячеек столбца F одинаковы, их можно вставить сразу, без использования цикла, во весь диапазон.


Andrei72

0 / 0 / 0

Регистрация: 02.02.2012

Сообщений: 60

1

02.03.2012, 18:34. Показов 7918. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Подскажите как решить данный вопрос.

Необходимо из программы добавить в ячейку Excel формулу. К примеру в ячейку C3 вставить формулу умножения двух ячеек А1 и В1. В ячейке бы формула выглядела так: =A1*B1

Так код выглядит в Basik Экселя

Visual Basic
1
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"



0



Памирыч

Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

02.03.2012, 20:31

2

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
        Dim Exc As Object
        Exc = CreateObject("Excel.Application")
        Exc.Workbooks.Open("C:1.xls").Activate()
        Exc.Cells(5, 1).Formula = "=A1+A2"
        Exc.ActiveWorkbook.Save()
        Exc.ActiveWorkbook.Close()
        Exc.Quit()
        Exc = Nothing



0



1706 / 1194 / 227

Регистрация: 23.12.2010

Сообщений: 1,526

02.03.2012, 20:37

3

угу. Пишешь в ячейке экселя формулу. Копируешь ее и вставляешь в код проги как строку. И передаешь как строку в свойство value ячейки. А уж эксель сам разберется, формула там или просто строка.



1



Andrei72

0 / 0 / 0

Регистрация: 02.02.2012

Сообщений: 60

03.03.2012, 11:40

 [ТС]

4

Как все просто оказалось Вы меня выручили, спасибо! Оказывается Excel правда сам распознает формулы.

Добавлено через 3 часа 12 минут
Возник еще такой вопрос. При записи формулы типа:

VB.NET
1
oSheet.Range("А1").Value = "СУММ(А2:А10)"

После сохранения в листе Excel в ячейке А1 написана правльная формула (при нажатии на нее выводится вверху), но в показывается в листе как : #ИМЯ?

Почему так происходит, Excel не может точно определить это названии или формула?



0



nio

6043 / 3452 / 335

Регистрация: 14.06.2009

Сообщений: 8,136

Записей в блоге: 2

03.03.2012, 11:41

5

Цитата
Сообщение от Andrei72
Посмотреть сообщение

Почему так происходит

так попробуй

VB.NET
1
oSheet.Range("А1").Value = "=СУММ(А2:А10)"



0



Подскажите, пожалуйста, как вставить формулу в ячейку с помощью макроса?

Попробовал вот так вот

Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Лист1").Range("C3").Formula = "=СУММ(A1;B1)"
End Sub

но дебаггер ругается :)  В чём причина? Может быть ему не нравится, что формулы из локализованной версии вставляют? Попробовал заменить «СУММ» на «SUM», но он опять ругается.
Разумеется, для суммы можно обойтись без слов. Если вставить вот такую формулу «=A1+B1», тогда всё работает без проблем, но как вставлять «серьёзные» формулы со словами? Например, ЕСЛИ, ИНДЕКС и т.п.?

И ещё вопрос: выражения
Sheets(«Лист1»).Range(«C3»).Formula =…
и
Worksheets(«Лист1»).Range(«C3»).Formula =…
тождественны или между ними есть разница?

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


В данном случае нужно написать так:
Sheets(«Лист1»).Range(«C3»).FormulaLocal = «=СУММ(A1;B1)»
Метод Formula для тех случаев, когда вы используете стиль ссылок RC
вЫРАЖЕНИЯ АБСОЛЮТНО ОДИНАКОВЫЕ

Не торопись, и все успеешь намного быстрее


Sheets — это все листы, в том числе и с диаграммами. Если вдруг при исполнении «for each ws in sheets» один из них будет с диаграммой (юзер вставил) — Ваш код, рассчитанный на ячейки, рухнет.

webmoney: E265281470651 Z422237915069 R41892628200


sergo44441 и Hugo121, спасибо за помощь! Как говорится, век живи, век учись! :) В карме отметился.

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


При изменении ячеек на событие Изменение следует отключать реакцию на события, чтобы не получить бесконечный цикл:

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  Sheets("Лист1").[C3].Formula = "=SUM(A1,B1)"
  Application.EnableEvents = True
End Sub

Или, что более практично, вписывать формулу только при выполнении условия…

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


Цитата: Шпец Докапыч от 23.08.2010, 15:01
При изменении ячеек на событие Изменение следует отключать реакцию на события, чтобы не получить бесконечный цикл:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
 Sheets("Лист1").[C3].Formula = "=SUM(A1,B1)"
 Application.EnableEvents = True
End Sub

Спасибо за ценный совет! (+1) Обязательно им воспользуюсь. А то я из-за этих самых бесконечных циклов последнее время вообще уже перестал использовать событие Change. Стараюсь его «обходить».

Цитата: Шпец Докапыч от 23.08.2010, 15:01Или, что более практично, вписывать формулу только при выполнении условия…

В смысле, через If Target=… ?

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


Здесь можно обыграть по-разному. Например,
Прервать работу макроса, если изменено сразу несколько ячеек:
If Target.Count > 1 Then Exit Sub
Продолжить работу макроса только при условии изменения ячейки «A1»:
If Target.Address = «$A$1» Then
…или первого столбца:
If Target.Column = 1 Then
…или определённого диапазона:
If Not Intersect(Target, Range(«A1:A99»)) Is Nothing Then

Ну и всё в таком духе…

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


Цитата: Шпец Докапыч от 01.09.2010, 14:52
Здесь можно обыграть по-разному. Например,
Прервать работу макроса, если изменено сразу несколько ячеек:
If Target.Count > 1 Then Exit Sub
Продолжить работу макроса только при условии изменения ячейки «A1»:
If Target.Address = «$A$1» Then
…или первого столбца:
If Target.Column = 1 Then
…или определённого диапазона:
If Not Intersect(Target, Range(«A1:A99»)) Is Nothing Then

Ну и всё в таком духе…

Понял, спасибо! Честно говоря, я даже не подозревал о таких возможностях «Таргета».

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


Решил вдохнуть в эту тему новую жизнь :)

Вопрос такой.
Теперь надо программно вставить не просто формулу, а формулу массива. Подскажите, пожалуйста, как это сделать.

Пробовал вот так вот:

        [МойДиапазон].Cells(Строка).FormulaLocal = _
             "{=НАИМЕНЬШИЙ(ЕСЛИ(ПолеЗначенийТаблицыАнализа=МАКС(ПолеЗначенийТаблицыАнализа);" & _
                "СТРОКА(ПолеЗначенийТаблицыАнализа)*1000+СТОЛБЕЦ(ПолеЗначенийТаблицыАнализа));" & _
                                                                     "СТРОКА(A" & Строка & "))}"

Но Экселю это почему-то не понравилось :)

Хотя и вставилось-то именно так, как я хотел, но почему-то формула не работает. Где ошибка?

Файл, по мотивам которого я экспериментирую, находится вот здесь:
https://forum.msexcel.ru/microsoft_excel/kak_poluchit_adres_yacheyki_s_izvestnym_znacheniem-t8667.0.html;msg44850#msg44850

Но мне сейчас, на самом деле, нужно не готовое решение, а только подсказка, как это делать, в смысле, программно вставлять в ячейки формулы массивов.

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


Цитата: Serge 007 от 15.10.2012, 00:22

Цитата: Олег* от 14.10.2012, 23:26
Теперь надо программно вставить не просто формулу, а формулу массива. Подскажите, пожалуйста, как это сделать.

Так (с помощью FormulaArray):
        [МойДиапазон].Cells(Строка).FormulaArray = _
        "=INDEX(R2C2:R21C2,SMALL(IF(MATCH(R2C2:R21C2,R2C2:R21C2,FALSE)=ROW(R2C2:R21C2)-1,ROW(R2C2:R21C2)-1),ROW()-1))"


Или, для Вашей формулы

    [МойДиапазон].Cells(Строка).FormulaArray = _
        "=SMALL(IF(ПолеЗначенийТаблицыАнализа=MAX(ПолеЗначенийТаблицыАнализа)," & _
        "ROW(ПолеЗначенийТаблицыАнализа)*1000+COLUMN(ПолеЗначенийТаблицыАнализа))," & _
        "ROW(A" & строка & "))"

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995



_Boroda_ и Serge 007

Огромное вам спасибо!!!

На самом деле, без вашей подсказки я бы ещё о-о-чень долго не смог бы сообразить, что под эту задучу нужен совсем другой метод (FormulaArray), да к тому же еще все должно быть в нелокализованном виде и вместо точек с запятой надо использовать просто запятые.

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


Олег, самый простой (с моей точки зрения) метод, чтобы не было «о-о-чень долго не смог бы сообразить» и чтобы легко переводить функции на буржуйский — пишете формулу, проверяете ее правильность, если все нормально, то встаете в ячейку с формулой (не обязательно, можно потом), включаете запись макроса, тычете мышой в строку формул и нажимаете Контрл+Ентер для обычной формулы (не обязательно, можно просто Ентер) и Контрл+Шифт+Ентер для формулы массива. Выключаете запись макроса, Альт+Ф11 и смотрите, что получилось.

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Цитата: _Boroda_ от 15.10.2012, 09:24
Олег, самый простой (с моей точки зрения) метод, чтобы не было «о-о-чень долго не смог бы сообразить» и чтобы легко переводить функции на буржуйский — пишете формулу, проверяете ее правильность, если все нормально, то встаете в ячейку с формулой (не обязательно, можно потом), включаете запись макроса, тычете мышой в строку формул и нажимаете Контрл+Ентер для обычной формулы (не обязательно, можно просто Ентер) и Контрл+Шифт+Ентер для формулы массива. Выключаете запись макроса, Альт+Ф11 и смотрите, что получилось.

Спасибо! Взял на вооружение!

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


Цитата: Олег* от 16.10.2012, 21:00

Цитата: _Boroda_ от 15.10.2012, 09:24
Олег, самый простой (с моей точки зрения) метод, чтобы не было «о-о-чень долго не смог бы сообразить» и чтобы легко переводить функции на буржуйский — пишете формулу, проверяете ее правильность, если все нормально, то встаете в ячейку с формулой (не обязательно, можно потом), включаете запись макроса, тычете мышой в строку формул и нажимаете Контрл+Ентер для обычной формулы (не обязательно, можно просто Ентер) и Контрл+Шифт+Ентер для формулы массива. Выключаете запись макроса, Альт+Ф11 и смотрите, что получилось.

Спасибо! Взял на вооружение!

К сожалению, при таком подходе, ссылки получаются в формате R1C1 и относительно активной ячейки.

Муж это единственный зарегенный юзер, а все остальные это хакеры :)


Цитата: Олег* от 17.10.2012, 20:31
К сожалению, при таком подходе, ссылки получаются в формате R1C1 и относительно активной ячейки.

Так это мы просто посмотрели общий вид формулы и ангицкие названия функций.
А потом в то, что получилось на ВБА нудно вставить диапазоны из формулы в Excel.
Это поначалу так, а потом, когда приспособитесь, то можно будет сразу в ВБА руками формулу набивать

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


«нудно вставить» — это по Фрейду описка? :) Точно подмечено…

webmoney: E265281470651 Z422237915069 R41892628200


На чтение 4 мин. Просмотров 33.1k.

Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.

Уровень мастерства: Средний

Автоматизировать написание формул

Написание формул может быть одной из самых трудоемких частей
вашей еженедельной или ежемесячной задачи Excel. Если вы работаете над
автоматизацией этого процесса с помощью макроса, вы можете попросить VBA
написать формулу и ввести ее в ячейки.

Поначалу написание формул в VBA может быть немного сложнее,
поэтому вот три совета, которые помогут сэкономить время и упростить процесс.

Совет № 1: Свойство Formula

Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.

Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:

  1. Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
  2. Строка формулы должна начинаться со знака равенства = после первой кавычки.

Вот простой пример формулы в макросе.

Sub Formula_Property()

  ' Формула представляет собой строку текста, заключенную в кавычки
  ' Начинается со знака =
  Range("B10").Formula = "=SUM(B4:B9)"

End Sub

Свойство Formula также можно использовать для чтения существующей формулы в ячейке.

Совет № 2: Используйте Macro Recorder

Если ваши формулы более сложные или содержат специальные
символы, их будет сложнее написать в VBA. К счастью, мы можем использовать
рекордер макросов, чтобы создать код для нас.

Create Formula VBA code with the Macro Recorder

Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.

  1. Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
  2. Введите формулу или отредактируйте существующую формулу.
  3. Нажмите Enter, чтобы ввести формулу.
  4. Код создается в макросе.

Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.

Sub Macro10()
' Используйте средство записи макросов для создания кода для сложных формул с
' специальны символы и относительные ссылки

  ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")"
    
End Sub

Совет № 3: Нотация формулы стиля R1C1

Если вы используете средство записи макросов для формул, вы
заметите, что он создает код со свойством FormulaR1C1.

Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.

R1C1 обозначает строки и столбцы.

Относительные ссылки

Для относительных ссылок мы указываем количество строк и
столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
Количество строк и столбцов указывается в квадратных скобках.

Следующее создаст ссылку на ячейку, которая на 3 строки выше
и на 2 строки справа от ячейки, содержащей формулу.

Отрицательные числа идут вверх по строкам и столбцам слева.

Положительные числа идут вниз по строкам и столбцам справа.

Абсолютные ссылки

Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.

Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1

При создании смешанных ссылок относительный номер строки или
столбца будет зависеть от того, в какой ячейке находится формула.

Проще всего использовать макро-рекордер, чтобы понять это.

Свойство FormulaR1C1 и свойство формулы

Свойство FormulaR1C1 считывает нотацию R1C1 и создает
правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
приведет к ошибке формулы.

Поэтому используйте свойство Formula, если ваш код содержит
ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
ссылки, которые применяются к нескольким ячейкам или зависят от того, где
введена формула.

Если ваша электронная таблица изменяется в зависимости от
условий вне вашего контроля, таких как новые столбцы или строки данных,
импортируемые из источника данных, то относительные ссылки и нотация стиля
R1C1, вероятно, будут наилучшими.

Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
комментарий ниже с вопросами или предложениями.

Как программно протянуть формулы при добавлении строк

JannMichel

Дата: Суббота, 10.09.2016, 15:54 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

Приветствую гуру и интересующихся этой темой.
Эта тема — продолжение темы «Подсчет суммы в столбце в определенном диапазоне строк.
Очень помог в этом вопросе buchlotnik, Прилагаю таблицу с ЕГО решением вопроса из выше указанной темы. Дальнейшая проработка таблицы заключается в следующем:
Необходимо, что бы при добавлении пользователем строк (после 9-той) автоматически растягивались формулы в столбцах F и G. Это корректно работает при условии, если растягивать формулы вручную. Причем не из любой ячейки в столбце, а именно с той, в которой уже есть результат подсчета (конкретно F7 и G4). И в строке ИТОГО сумму тоже надо корректировать руками. Для меня это не проблема, но боюсь что будет БОЛЬШОЙ проблемой для пользователей. И каждый будет звонить и говорить, что таблица не работает. Можно ли это поправить программно?

Предыстория: Данная таблица для учителей школы, которые составляют поурочное расписание на год. Цель данной таблицы — распространить ее между учителями школы. К сожалению все они, кроме моей жены не работают в excel. Все делают эти планы в Word’e. Отсюда и сроки большие, и много ошибок, т.к. считают часы вручную. Да и жена моя начала использовать Excel только после моих настойчивых рекомендаций. Поэтому задумка заключается в том, чтобы составить шаблон, в который входит шапка и три строки: БЛОК, РАЗДЕЛ, ТЕМА (строки 1-9 и 15) Вставить формулы и раздать пользователям. При добавлении пользователем новой строки (между строками 9 и 15), формулы должны тоже добавляться автоматически.

К сообщению приложен файл:

0053934.xlsx
(13.0 Kb)

Сообщение отредактировал JannMichelСуббота, 10.09.2016, 20:08

 

Ответить

gling

Дата: Суббота, 10.09.2016, 17:18 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

Вариант «Умной таблицей», может сгодится в качестве примера. При вставке строк или растягивании за нижний угол формулы прописываются автоматически.

К сообщению приложен файл:

3547040.xlsx
(14.3 Kb)


ЯД-41001506838083

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 19:14 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

gling, да, стало очень удобно. Формулы растягиваются. Итоговая сумма тоже автоматически захватывает добавленные строки.
Добавил я несколько строк, и с определенного момента стал происходить сбой. Со строки 14 формула выдает не правильную сумму, а ниже Н/Д

К сообщению приложен файл:

6097611.xlsx
(15.6 Kb)

 

Ответить

gling

Дата: Суббота, 10.09.2016, 19:40 |
Сообщение № 4

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

Не придумал как привязаться к последней строке таблиц поэтому написал в формуле с запасом до 1000 строк.

К сообщению приложен файл:

0465587.xlsx
(14.2 Kb)


ЯД-41001506838083

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 20:01 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

gling, таблица все верно считает… до определенного момента. Сначала подумал, что я как то не правильно вводил данные или сбил где-то формулу. Затем снова скачал файл и опять стал добавлять строки. И с ячейки F31 подсчет сбивается.

К сообщению приложен файл:

8428392.xlsx
(16.0 Kb)

 

Ответить

Nic70y

Дата: Суббота, 10.09.2016, 20:14 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

в той теме уже не стал отвечать, т.к. ответ более подходит к этой.
[vba]

Код

Sub Plus_Row()
    Rows([D1048576].End(xlUp).Row).Insert Shift:=xlDown
End Sub

[/vba]
файл перезалил — неправильную формулу написал в E10, исправил
(клятый копипаст)

еще раз заменил файл, выкинул СТРОКА(ссылка), т.к. для умной таблицы это не приемлимо

К сообщению приложен файл:

6526405.xlsm
(20.3 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСуббота, 10.09.2016, 20:34

 

Ответить

gling

Дата: Суббота, 10.09.2016, 20:31 |
Сообщение № 7

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

В файле по не известной мне причине формулы идут не по порядку, наверно удаляли строки, но в столбцах выскакивает ярлычек, нажав на который можно в столбце проставить формулы. Установите курсор в строку формул и нажмите Enter, появится ярлычек.


ЯД-41001506838083

 

Ответить

Nic70y

Дата: Суббота, 10.09.2016, 20:36 |
Сообщение № 8

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

gling, это «болезнь» умных таблиц, в них не рекомендуется (категорически) делать ссылки на конкретные ячейки/диапазоны, тока на саму таблицу
(не всегда конечно)
[p.s.]сам сделал на 4-ю строку в сумме (шоб не удлинять формулу) надеюсь ее не зацепит[/p.s.]


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСуббота, 10.09.2016, 20:38

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 20:38 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

gling, сделал как Вы описали — все вернулось на место. Благодарю за помощь.
Есть еще вопрос по продолжению. Не замучил еще?

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 21:04 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

Nic70y, Очень интересная кнопка. А можно ее встроить в таблицу gling? И если бы еще их сделать две: одну в столбец БЛОК, что бы сразу вставлялось слово БЛОК, Вторую в столбец РАЗДЕЛ с тем же результатом. В случае с РАЗДЕЛОМ должна добавляться еще одна пустая строка для названия урока. Это возможно? Последнюю табличку сделанную gling прикрепил

К сообщению приложен файл:

9966894.xlsx
(14.2 Kb)

 

Ответить

krosav4ig

Дата: Суббота, 10.09.2016, 21:17 |
Сообщение № 11

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

как вариант, формула [vba]

Код

=ЕСЛИ([@Блоки]=»»;»»;СУММ([@Урок:Урок]:ИНДЕКС([Урок]:[Урок];СТРОКА()+ПОИСКПОЗ([[#Заголовки];[Блок]];ИНДЕКС([Блоки];СТРОКА()-1):[[#Итоги];[Блоки]];)-1-СТРОКА([#Заголовки]))))

[/vba]

К сообщению приложен файл:

8452831.xlsx
(15.8 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igСуббота, 10.09.2016, 21:18

 

Ответить

Nic70y

Дата: Суббота, 10.09.2016, 21:22 |
Сообщение № 12

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

А можно ее встроить в таблицу gling?

можно


ЮMoney 41001841029809

Сообщение отредактировал Nic70yСуббота, 10.09.2016, 21:25

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 21:59 |
Сообщение № 13

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

Nic70y, Красота. Вставляй данные — нехочу! Просто отлично! Благодарю!

 

Ответить

buchlotnik

Дата: Суббота, 10.09.2016, 22:02 |
Сообщение № 14

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

Замечаний:
20% ±


2010, 2013, 2016 RUS / ENG

Nic70y, Николай, если последовательно вставить блок, раздел и урок — формула для блока уплывает

 

Ответить

Nic70y

Дата: Суббота, 10.09.2016, 22:04 |
Сообщение № 15

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010

Михаил, ТС не захотел мои формулы.


ЮMoney 41001841029809

 

Ответить

buchlotnik

Дата: Суббота, 10.09.2016, 22:05 |
Сообщение № 16

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

Замечаний:
20% ±


2010, 2013, 2016 RUS / ENG

[offtop]Понял B)

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 22:24 |
Сообщение № 17

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

krosav4ig, Ваша табличка сбоев не дает, которые описаны в посте 5 и 7. По крайней мере при первой поверке. Если таких ошибок не будет — это просто чудесно, потому как пользователи, ввиду человеческого фактора, не будут контролировать все цифры, которые выдают формулы. Ошибки неизбежны.
Пожелания:
1) Вы поменяли местами столбцы БЛОК и РАЗДЕЛ. Это принципиально? Возможно ли их вернуть на место для простоты восприятия, чтобы они располагались в строке по возрастанию?
2) И можно ли добавить кнопки, как сделал Nic70y (пост 12). Плюс к этому дополнить третью кнопку надписью УРОК. И что бы при её нажатии добавлялся следующий порядковый номер урока в столбце НОМЕР УРОКА/ЗАНЯТИЯ.

Сообщение отредактировал JannMichelСуббота, 10.09.2016, 22:53

 

Ответить

gling

Дата: Суббота, 10.09.2016, 22:30 |
Сообщение № 18

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

Еще вариант.

К сообщению приложен файл:

3302797.xlsm
(22.7 Kb)


ЯД-41001506838083

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 22:40 |
Сообщение № 19

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

ТС не захотел мои формулы.

Nic70y, ТС — это создатель топика? Если да, то дело не в том, что я не захотел Ваши формулы. А в том, что я не разобрался в них. Возможно они даже лучше остальных предложенных. Какие приемы используют Ваши формулы в отличии от других формул, я не знаю. Не специалист. Поэтому и обратился к ВАМ за помощью. Я же оцениваю с точки зрения результата. И Ваша формула считает, и формула предложенная gling считает. Разницу, которую я увидел, это более удобное оформление для восприятия.

 

Ответить

JannMichel

Дата: Суббота, 10.09.2016, 22:52 |
Сообщение № 20

Группа: Пользователи

Ранг: Участник

Сообщений: 74


Репутация:

0

±

Замечаний:
0% ±


2013

gling, Да, то что хотел. Спасибо. Только исправлять приходиться вручную после добавления уроков. Формула сбивается. Но

Установите курсор в строку формул и нажмите Enter, появится ярлычек.

спасает. Ну что же. Если нельзя исправить — будем работать так. Это не всю таблицу ручками перебирать. Огромное спасибо.

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Excel как проверка заполненности ячейки
  • Excel как просуммировать минуты
  • Excel как проверить что значение ячейки формула
  • Excel как просуммировать время
  • Excel как проверить что в ячейке цифры