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

Вход

Регистрация

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

 

= Мир MS Excel/Работа формулы из"умной" таблицы в коде - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа формулы из"умной" таблицы в коде (Макросы/Sub)
Работа формулы из"умной" таблицы в коде
AVI Дата: Понедельник, 06.08.2018, 06:53 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 355
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
Помогите, пожалуйста, разобраться со следующей задачей.
Таблица "Продажи_tb" заполняется через форму.
В таблицу в столбцах Сумма и Сумма накопит уже вбиты формулы.
Честно говоря, первый раз сталкиваюсь с необходимостью работы формул через макросы. Единственное понял, что макрорекодер позволяет переводить формулы на англ язык. Больше никак не помог мне.
В таблице два вида формул: 1 - которая охватыват весь диапазон данных. Вторая - затрагивает данные только предыдущих строк.
Помогите, пожалуйста, заставить формулы рассчитываться в макросе, а в ячейки выводить только результат.
Я понимаю, что есть два пути для этого: первый - создать функции, а второй - включить формулу прямо в процедуру. Мне, наверное, более понятный пока будет второй путь, что бы хоть с чего-то начать разбираться.
К сообщению приложен файл: __.xlsm(23.9 Kb)


Сообщение отредактировал AVI - Понедельник, 06.08.2018, 09:38
 
Ответить
СообщениеДобрый день!
Помогите, пожалуйста, разобраться со следующей задачей.
Таблица "Продажи_tb" заполняется через форму.
В таблицу в столбцах Сумма и Сумма накопит уже вбиты формулы.
Честно говоря, первый раз сталкиваюсь с необходимостью работы формул через макросы. Единственное понял, что макрорекодер позволяет переводить формулы на англ язык. Больше никак не помог мне.
В таблице два вида формул: 1 - которая охватыват весь диапазон данных. Вторая - затрагивает данные только предыдущих строк.
Помогите, пожалуйста, заставить формулы рассчитываться в макросе, а в ячейки выводить только результат.
Я понимаю, что есть два пути для этого: первый - создать функции, а второй - включить формулу прямо в процедуру. Мне, наверное, более понятный пока будет второй путь, что бы хоть с чего-то начать разбираться.

Автор - AVI
Дата добавления - 06.08.2018 в 06:53
sboy Дата: Понедельник, 06.08.2018, 11:08 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Если Вам нужны только значения, то вычисляйте их прямо в основной процедуре
[vba]
Код
Sub AddSale() ' добавить получателя
Dim tabl As Range
    Set ShUF_Sale = ThisWorkbook.Worksheets("Продажи")
    Set UF_SaleListObj = ShUF_Sale.ListObjects("Продажи_tb")
    Set tabl = ShUF_Sale.Range("Таблица4")
    Set UF_SaleListRow = UF_SaleListObj.ListRows.Add
        With UF_SaleListRow
            .Range(1) = UF_Sale.txb_Date.Value
            .Range(2) = UF_Sale.txb_Seller.Value
            .Range(3) = UF_Sale.cbx_fruit.Value
            .Range(4) = UF_Sale.txb_count.Value
            .Range(5) = .Range(4) * tabl.Find(.Range(3)).Offset(0, 1).Value
            .Range(6) = .Range(5) + .Range(6).Offset(-1, 0)
        End With
End Sub
[/vba]
К сообщению приложен файл: -6-.xlsm(24.6 Kb)
 
Ответить
СообщениеДобрый день.
Если Вам нужны только значения, то вычисляйте их прямо в основной процедуре
[vba]
Код
Sub AddSale() ' добавить получателя
Dim tabl As Range
    Set ShUF_Sale = ThisWorkbook.Worksheets("Продажи")
    Set UF_SaleListObj = ShUF_Sale.ListObjects("Продажи_tb")
    Set tabl = ShUF_Sale.Range("Таблица4")
    Set UF_SaleListRow = UF_SaleListObj.ListRows.Add
        With UF_SaleListRow
            .Range(1) = UF_Sale.txb_Date.Value
            .Range(2) = UF_Sale.txb_Seller.Value
            .Range(3) = UF_Sale.cbx_fruit.Value
            .Range(4) = UF_Sale.txb_count.Value
            .Range(5) = .Range(4) * tabl.Find(.Range(3)).Offset(0, 1).Value
            .Range(6) = .Range(5) + .Range(6).Offset(-1, 0)
        End With
End Sub
[/vba]

Автор - sboy
Дата добавления - 06.08.2018 в 11:08
AVI Дата: Понедельник, 06.08.2018, 19:55 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 355
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
Спасибо, это конечно работает. Но я думал, что есть какая-нить форма кода куда можно впилить формулу и она работать будет.
 
Ответить
СообщениеСпасибо, это конечно работает. Но я думал, что есть какая-нить форма кода куда можно впилить формулу и она работать будет.

Автор - AVI
Дата добавления - 06.08.2018 в 19:55
nilem Дата: Понедельник, 06.08.2018, 20:02 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1473
Репутация: 519 ±
Замечаний: 0% ±

Excel 2013
Ведь в умных таблицах формулы автоматически распространяются на вновь добавленные строки. Т.е. достаточно прописать формулу в 1-й строке данных и дальше она сама будет копироваться.
Разве не вариант?


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеВедь в умных таблицах формулы автоматически распространяются на вновь добавленные строки. Т.е. достаточно прописать формулу в 1-й строке данных и дальше она сама будет копироваться.
Разве не вариант?

Автор - nilem
Дата добавления - 06.08.2018 в 20:02
AVI Дата: Вторник, 07.08.2018, 07:50 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 355
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
Ведь в умных таблицах формулы автоматически распространяются на вновь добавленные строки. Т.е. достаточно прописать формулу в 1-й строке данных и дальше она сама будет копироваться.
Разве не вариант?


Ну, во первых, если фомула охватывает не весь диапазон в столбце, а, например, только предыдущие строки, то при добавлении строки диапазон ломается.
Во вторых, у меня в рабочем файле в одной таблице две не маленьких формулы массива, это помимо других формул, при этом, рабочий файл растет каждый день и формулы, забитые в ячейки, начинают подтормаживать всю работу файла.
Ну, а в третьих, я хочу узнать как можно "быстро и не дорого" не имея особых знаний по матчасти, запилить формулу в макрос, что бы результат работы формулы вставал куда надо.
 
Ответить
Сообщение
Ведь в умных таблицах формулы автоматически распространяются на вновь добавленные строки. Т.е. достаточно прописать формулу в 1-й строке данных и дальше она сама будет копироваться.
Разве не вариант?


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

Автор - AVI
Дата добавления - 07.08.2018 в 07:50
sboy Дата: Вторник, 07.08.2018, 09:07 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
Не совсем понятно, что все таки в итоге надо) шашечки или ехать?)
Ваши формулы можно вставить вот так например и заменять потом на значения
[vba]
Код
            .Range(5).FormulaArray = "=IFERROR([@[Кол-во]]*VLOOKUP([@Фрукт],R5C13:R8C14,2,),"""")"
            .Range(5).Value = .Range(5).Value
            .Range(6).Formula = "=SUM(R4C8:R[-1]C[-1])"
            .Range(6).Value = .Range(6).Value
[/vba]
К сообщению приложен файл: 7935351.xlsm(26.0 Kb)
 
Ответить
СообщениеНе совсем понятно, что все таки в итоге надо) шашечки или ехать?)
Ваши формулы можно вставить вот так например и заменять потом на значения
[vba]
Код
            .Range(5).FormulaArray = "=IFERROR([@[Кол-во]]*VLOOKUP([@Фрукт],R5C13:R8C14,2,),"""")"
            .Range(5).Value = .Range(5).Value
            .Range(6).Formula = "=SUM(R4C8:R[-1]C[-1])"
            .Range(6).Value = .Range(6).Value
[/vba]

Автор - sboy
Дата добавления - 07.08.2018 в 09:07
AVI Дата: Вторник, 07.08.2018, 09:19 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 355
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
Не совсем понятно, что все таки в итоге надо) шашечки или ехать?)

Как раз в этом случае шашечки мне и позволят ехать.
Второй Ваш вариант, на первый взгляд, прямо в точку. Потестю его. Если будут вопросы можно их ненавязчиво задать?
 
Ответить
Сообщение
Не совсем понятно, что все таки в итоге надо) шашечки или ехать?)

Как раз в этом случае шашечки мне и позволят ехать.
Второй Ваш вариант, на первый взгляд, прямо в точку. Потестю его. Если будут вопросы можно их ненавязчиво задать?

Автор - AVI
Дата добавления - 07.08.2018 в 09:19
sboy Дата: Вторник, 07.08.2018, 09:51 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
[offtop]
Второй Ваш вариант, на первый взгляд, прямо в точку

в первом было просто ехать, во 2 с шашечками, профессионально - дорого - кругами, для намотки счетчика таксометра)
 
Ответить
Сообщение[offtop]
Второй Ваш вариант, на первый взгляд, прямо в точку

в первом было просто ехать, во 2 с шашечками, профессионально - дорого - кругами, для намотки счетчика таксометра)

Автор - sboy
Дата добавления - 07.08.2018 в 09:51
AVI Дата: Вторник, 07.08.2018, 11:33 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 355
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
в первом было просто ехать, во 2 с шашечками, профессионально - дорого - кругами, для намотки счетчика таксометра)


Я понимаю это, просто я тут пишу на форуме не просто тупо получить ответ. Я хочу разобраться. К сожалению, у меня нет ни образования, я никогда не работал с кодами/программированием. В Excel'е я работал исключительно с формулами, поэтому для меня тут совсем все новое. Но вот решил развиваться и разбираться. Вот и мучаю старожил.

Спасибо за ответ!
 
Ответить
Сообщение
в первом было просто ехать, во 2 с шашечками, профессионально - дорого - кругами, для намотки счетчика таксометра)


Я понимаю это, просто я тут пишу на форуме не просто тупо получить ответ. Я хочу разобраться. К сожалению, у меня нет ни образования, я никогда не работал с кодами/программированием. В Excel'е я работал исключительно с формулами, поэтому для меня тут совсем все новое. Но вот решил развиваться и разбираться. Вот и мучаю старожил.

Спасибо за ответ!

Автор - AVI
Дата добавления - 07.08.2018 в 11:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа формулы из"умной" таблицы в коде (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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