Как с рабочего листа вызывать "макросные" пользовательские функции?

Автор Олег*, 28.06.2011, 12:30

« назад - далее »

Олег*

Чё-то я туплю...
Написал в Модуле1 вот такой простенький код:

Public Function Сложение(A As Long, B As Long) As Long
  Сложение = A + B
End Function


А вот как получить в ячейке A3 с помощью этого кода сумму значений ячеек A1 и  A2, не пойму.
Попробовал вставить в ячейку  A3
=Сложение ($A$1, $A$2)

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

Serge 007

Цитата: Олег* от 28.06.2011, 12:30
Написал в Модуле1 вот такой простенький код:

Public Function Сложение(A As Long, B As Long) As Long
 Сложение = A + B
End Function


А вот как получить в ячейке A3 с помощью этого кода сумму значений ячеек A1 и  A2, не пойму.
Попробовал вставить в ячейку  A3
=Сложение ($A$1, $A$2)

Подскажите, пожалуйста, как надо действовать.
Всё правильно Вы делаете, только запятую на ; здесь: =Сложение ($A$1; $A$2)
поменяйте, если локаль русская.
Всё работает (см. файл).
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Serge 007

Цитата: Serge 007 от 28.06.2011, 12:38
Всё правильно, если локаль русская.
А если нет, то название функции поменять надо...
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Олег*

Цитата: Serge 007 от 28.06.2011, 12:38
Всё правильно Вы делаете, только запятую на ; здесь: =Сложение ($A$1; $A$2)
поменяйте, если локаль русская.
Всё работает (см. файл).

Огромное спасибо! Всё получилось!
Честно говоря, сам бы я никогда не сообразил. Это вообще нормальной логикой невозможно было бы "вычислить". Одна и та же функция, но в одном месте запятая, а в другом точка с запятой.

Разумеется, ради простого сложения двух чисел я бы не стал затрагивать эту тему.
Замысел у меня вот такой.
На многих листах рабочей книги и в исходных данных многих диаграмм имеется большое количество, в общем-то, однотипных функций, которые мне хочется "упростить" с помощью макросов.
Функции длинные, но однотипные. Там фигурируют "смещение", "поиск позиции" и т.п.. Ну сами знаете, какие формулы в книге Уокенбаха :)
Ну вот мне и хочется их "упростить", написать "макросные" функции и вызывать одни и те же "СОБСТВЕННЫЕ" КОРОТКИЕ функции, но с разными параметрами.
Споткнулся на первом же шаге, но с Вашей помощью поднялся и продолжу движение в выбранном направлении :)
Ещё раз большое спасибо за оперативный ответ!

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

_Boroda_

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



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

Serge 007

Цитата: Олег* от 28.06.2011, 13:22
На многих листах рабочей книги и в исходных данных многих диаграмм имеется большое количество, в общем-то, однотипных функций, которые мне хочется "упростить" с помощью макросов. Там фигурируют "смещение", "поиск позиции" и т.п.
Согласен с Александром, часто проще имена использовать. Но может мы сами формулы упростим? Давайте пример - посмотрим что можно сделать.
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Олег*

Цитата: _Boroda_ от 28.06.2011, 13:31
В некоторых случаях (по моему мнению) проще имена использовать.
А покажите файл.

Цитата: Serge 007 от 28.06.2011, 13:36
Цитата: Олег* от 28.06.2011, 13:22
На многих листах рабочей книги и в исходных данных многих диаграмм имеется большое количество, в общем-то, однотипных функций, которые мне хочется "упростить" с помощью макросов. Там фигурируют "смещение", "поиск позиции" и т.п.
Согласен с Александром, часто проще имена использовать. Но может мы сами формулы упростим? Давайте пример - посмотрим что можно сделать.

Скорее всего, вы оба правы. Но с именами есть одна проблема - уж очень кропотливая работа их вводить и отслеживать.
А тут я, изучая книгу Уокенбаха, столкнулся вот с этой фразой:



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

Пример пока показать не могу.
У меня книга Эксель получает данные из-вне, обрабатывает их с помощью встроенных функций рабочих листов и моих собственых макросов, а потом представляет эти данные в виде диаграмм. Причём всё меняется по ходу дела: вычитал где-нибудь, как можно нагляднее и удобнее представить данные на диаграмме, а потом это в свою программу перетаскиваю, пробую, экспериментирую...
Сейчас вот, например, собираюсь сделать диаграмму с полосами прокрутки.

Одним словом, я пытаюсь найти оптимальный путь, который мне будет наиболее удобен. Споткнулся на первом же шаге в новом направлении, ну вот и решил воспользоваться помощью знатоков.
Теперь попробую дальше двигаться самостоятельно. Если не получится, то снова обращусь за советом и, разумеется, уже с конкретными примерами.

Ещё раз большое спасибо за помощь!




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

_Boroda_

ЦитироватьТеперь попробую дальше двигаться самостоятельно. Если не получится, то снова обращусь за советом и, разумеется, уже с конкретными примерами.
Вот это я понимаю! Приятно работать с человеком!
Не "Сделайте все за меня", а "Сам попробую, если не получится - спрошу"
Скажи мне, кудесник, любимец ба'гов...



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

Serge 007

Цитата: Олег* от 28.06.2011, 14:52
У меня книга Эксель получает данные из-вне, обрабатывает их с помощью встроенных функций рабочих листов и моих собственых макросов, а потом представляет эти данные в виде диаграмм.
Боюсь что всё это лишне...
Скорее всего Вам достаточно будет сводной таблицы, подключённой к внешнему источнику данных и сводной диаграммы.
Но, дело Ваше, хотите идти своим путём - пожалуйста.
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Олег*

Цитата: Serge 007 от 28.06.2011, 15:54
Цитата: Олег* от 28.06.2011, 14:52
У меня книга Эксель получает данные из-вне, обрабатывает их с помощью встроенных функций рабочих листов и моих собственых макросов, а потом представляет эти данные в виде диаграмм.
Боюсь что всё это лишне...
Скорее всего Вам достаточно будет сводной таблицы, подключённой к внешнему источнику данных и сводной диаграммы.
Но, дело Ваше, хотите идти своим путём - пожалуйста.

Вы здесь все профессионалы, а я любитель :)
Но вы же такими не родились, тоже методом проб и ошибок находили оптимальные для вас методы решения различных задач. Ну вот и я тоже должен набить свои собственные шишки :)

А ксатати, как можно подключить сводную таблицу к внешнему источнику даных?
Сейчас у меня внешняя программа просто транслирует данные на лист Экселя в таблицу, но не в сводную, а в простую. А уже потом я эти данные копирую на отдельный лист и там делаю с ними всё, что захочу :)

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

Serge 007

Цитата: Олег* от 28.06.2011, 16:14
Как можно подключить сводную таблицу к внешнему источнику даных?
В мастере сводной на первом шаге: Во внешнем источнике данных
См картинку во вложении.

Цитата: Олег* от 28.06.2011, 16:14
Большинство диаграмм, которые уже есть и которые ещё только будут, построены не "напрямую" по тем данным, которые транслируются из-вне, а по тем "дочерним" таблицам, которые представляют из себя исходные данные, обработанные и развёрнутые во времени с определённым интервалом.
Опять-таки надо видеть...
Скорее всего и это решаемо.
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Олег*

Цитата: Serge 007 от 28.06.2011, 16:31
Цитата: Олег* от 28.06.2011, 16:14
Как можно подключить сводную таблицу к внешнему источнику даных?
В мастере сводной на первом шаге: Во внешнем источнике данных
См картинку во вложении.

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

Цитата: Serge 007 от 28.06.2011, 16:31
Цитата: Олег* от 28.06.2011, 16:14
Большинство диаграмм, которые уже есть и которые ещё только будут, построены не "напрямую" по тем данным, которые транслируются из-вне, а по тем "дочерним" таблицам, которые представляют из себя исходные данные, обработанные и развёрнутые во времени с определённым интервалом.
Опять-таки надо видеть...
Скорее всего и это решаемо.

Да это понятно, что решаемо. Всё уже есть, на самом деле. Просто сейчас появилась новая задача из серии "Ну всё у меня уже есть и всё меня устраивает, но неплохо бы ещё и это попробовать".
И когда я начал прикидывать основные этапы решения этой новой задачи, мне вспомнилось, как неприятно мне было вставлять именованные функции в каждый лист с диаграммами, а потом в "Исходные данные" самих диаграмм.
Причём все эти диграммы различаются только интервалами времени, в котором "развёрнуты" данные. Короче говоря, работа достаточно кропотливая и нудная. А тут на глаза попалась процитированная выше фраза из учебника, ну вот и решил попробовать новый способ. Может быть, так мне больше понравится? :)
Как это будет происходить, пока вижу не совсем отчётливо, к тому же, впереди ясно просматривается проблема со вставкой в "макросные" формулы локализованных функций, но попробовать всё-таки хочется. Ну хотя бы для общего развития и ознакомления с этой возможностью Экселя :)
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

Serge 007

Цитата: Олег* от 28.06.2011, 17:29
...все эти диграммы различаются только интервалами времени, в котором "развёрнуты" данные...
Это как раз работа для сводных диаграмм :)
Но, на нет и суда нет. Удачи Вам в изучении Excel!
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Олег*

Цитата: Serge 007 от 28.06.2011, 17:55
Цитата: Олег* от 28.06.2011, 17:29
...все эти диграммы различаются только интервалами времени, в котором "развёрнуты" данные...
Это как раз работа для сводных диаграмм :)

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