Excel макросы выделить графики

Обновлено: 07.07.2024

Вожусь вот с экспериментальными данными. Хотел бы организовать рутинную работу. Буду рад, если подскажите, как это сделать..

Задача
- довольно простая.
Есть массив данных, разбитый на множество блоков. В каждом блоке есть пара столбцов со значениями, по которым нужно построить графики. Дабы не делать это много раз, склепал и сохранил в Template отформатированный как надо график, который хотел бы сделать для всех этих данных. Всего должно быть графиков 30.
Начал писать макрос на VBA и тут же споткнулся.

Вопрос 1:
Как правильно вставлять график из Templates?

Но это ещё не всё..
Затем я хотел бы сделать графики определённого размера, чтобы они все были одинаковые. При обычной встаке (ну, не макросом, а "ручками") графики появляются маленькие как я их не сохраняй. Вот тут уже обсуждался вопрос ресайза графиков на определённое количество ячеек. А можно изменять на определённое количество единиц Height и Width? В идеале было бы здорово дописать в макросе пару строчек кода, так чтобы после появления график автоматически ресайзился на заданное количество единиц (скажем, чтобы Height=7" и Width=8").

Вопрос 2:
Как с помощью макроса написанного в VBA изменить размер график на заданное количество единиц?

Вожусь вот с экспериментальными данными. Хотел бы организовать рутинную работу. Буду рад, если подскажите, как это сделать..

Задача
- довольно простая.
Есть массив данных, разбитый на множество блоков. В каждом блоке есть пара столбцов со значениями, по которым нужно построить графики. Дабы не делать это много раз, склепал и сохранил в Template отформатированный как надо график, который хотел бы сделать для всех этих данных. Всего должно быть графиков 30.
Начал писать макрос на VBA и тут же споткнулся.

Вопрос 1:
Как правильно вставлять график из Templates?

Но это ещё не всё..
Затем я хотел бы сделать графики определённого размера, чтобы они все были одинаковые. При обычной встаке (ну, не макросом, а "ручками") графики появляются маленькие как я их не сохраняй. Вот тут уже обсуждался вопрос ресайза графиков на определённое количество ячеек. А можно изменять на определённое количество единиц Height и Width? В идеале было бы здорово дописать в макросе пару строчек кода, так чтобы после появления график автоматически ресайзился на заданное количество единиц (скажем, чтобы Height=7" и Width=8").

Вопрос 2:
Как с помощью макроса написанного в VBA изменить размер график на заданное количество единиц? Triangle

Вожусь вот с экспериментальными данными. Хотел бы организовать рутинную работу. Буду рад, если подскажите, как это сделать..

Задача
- довольно простая.
Есть массив данных, разбитый на множество блоков. В каждом блоке есть пара столбцов со значениями, по которым нужно построить графики. Дабы не делать это много раз, склепал и сохранил в Template отформатированный как надо график, который хотел бы сделать для всех этих данных. Всего должно быть графиков 30.
Начал писать макрос на VBA и тут же споткнулся.

Вопрос 1:
Как правильно вставлять график из Templates?

Но это ещё не всё..
Затем я хотел бы сделать графики определённого размера, чтобы они все были одинаковые. При обычной встаке (ну, не макросом, а "ручками") графики появляются маленькие как я их не сохраняй. Вот тут уже обсуждался вопрос ресайза графиков на определённое количество ячеек. А можно изменять на определённое количество единиц Height и Width? В идеале было бы здорово дописать в макросе пару строчек кода, так чтобы после появления график автоматически ресайзился на заданное количество единиц (скажем, чтобы Height=7" и Width=8").

Вопрос 2:
Как с помощью макроса написанного в VBA изменить размер график на заданное количество единиц? Автор - Triangle
Дата добавления - 04.09.2014 в 06:01

У вас большой монитор, но таблицы, с которыми вы работаете - еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс "соскользнуть" взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего!

А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:

Поудобнее, чем линейка, правда?

Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ - со своими плюсами и минусами. Давайте разберем их детально.

Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец

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

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Измените адрес рабочего диапазона на свой - именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.

Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off - выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.

Плюсы этого способа:

  • относительная простота реализации
  • выделение - операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть

Минусы этого способа:

  • такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки - выделяются сразу все строки и столбцы, входящие в объединение
  • если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца

Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование

Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA - высший пилотаж ;)

Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке - высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:

  • кодовое слово для параметра, например "столбец" или "строка"
  • адрес ячейки, для которой мы хотим определить значение этого параметра

Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.

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

  1. Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
  2. В Excel 2003 и более старших версиях открываем меню Формат - Условное форматирование - Формула (Format - Conditional Formatting - Formula) . В Excel 2007 и новее - жмем на вкладке Главная (Home) кнопку Условное форматирование - Создать правило (Conditional Formatting - Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
  3. Вводим формулу для нашего координатного выделения:

Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:

Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.

Плюсы этого способа:

  • Условное форматирование не нарушает пользовательское форматирование таблицы
  • Этот вариант выделения корректно работает с объединенными ячейками.
  • Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
  • Макросы используются минимально

Минусы этого способа:

  • Формулу для условного форматирования надо вводить вручную.
  • Нет быстрого способа включить-выключить такое форматирование - оно включено всегда, пока не будет удалено правило.

Способ 3. Оптимальный. Условное форматирование + макросы

Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8 и действуйте аналогично способу 1.

Способ 4. Красивый. Надстройка FollowCellPointer

Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:

Красивое решение. Не без глюков местами, но попробовать точно стоит. Качаем архив, распаковываем на диск и устанавливаем надстройку:

Написать по данному шаблону программу построения графика функции y=sin(lnx)=x^2 на отрезке [0;П]
Написать по данному шаблону программу построения графика функции y=sin(lnx)=x^2 на отрезке :program.

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

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

Построение точечного графика в 3D с возможностью масштабирования и поворота
Построить точечный график поверхности с возможностью масштабирования и поворота .

OLEGOFF, Sheets("Лист1") активен при работе макроса?
М.б. так надо у вас после этой строчки Charts.Add активно окно диаграммы а не Лист 1, там нет строк, вот по этому Cells(Rows.Count, 3) ругается. Vlad999,подскажите как активировать Лист1 и в какой строчке? активировать его не нужно.
как вариант в начале кода до Charts.Add найти последнюю заполненную строку нужного столбца.

Vlad999,спасибо,помогло.Теперь буду думать над циклом

Добавлено через 21 час 41 минуту
Сделал цикл построения графика.

Все работает,только вот никак не могу ввести в тело цикла строку
т.к.тогда строятся все 56 графиков вместо одного.
А так как сейчас,приходится вручную подставлять номер самого длинного столбца,но при этом соответственно замедляется работа.
Как правильно организовать цикл?Подскажите пожалуйста. цикл для чего вам нужен?
в общем опишите вашу задачу. На Листе имеются координаты точек изображения.(X,Y).Координаты расположены в соответствии с цветом.Необходимо получить изображение на графике с наименьшими телодвижениями.

Решение


Написать программу построения графика функции.(Графика)
Написать программу построения графика функции y= x2 +2x-cos x на отрезке . Помогите.

Паскаль графика (построения графика функции)
как поставить х и у буквами в графике и пронумеровать ось рисками от 1. подскажите пож вот.

Как создать макрос с новой страницей по шаблону?
как создать макрос? П.1. Взять значение из первого листа и второго столбца имя/фамилия П.2.

Макрос для Excel - изменение ячеек по шаблону
Добрый день! Просьба помочь - нужен макрос со следующим условием: В ячейку А1 я вношу слово.

Написать макрос для построения сводной таблицы
Дорогие друзья, и, надеюсь, в будущем, коллеги, прошу у вас помощи в написании 2-ух макросов на.

Макрос для построения диаграммы по разнесенным столбикам
Здравствуйте! У меня вопрос по макросам. Необходимо записать макрос для построения диаграммы на.

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

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

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

Table of Contents

Как включить макросы в Excel

В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!

1. Копирование данных из одного файла в другой.

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

2. Отображение скрытых строк

Иногда большие файлы Excel можно содержать скрытые строки для большей ясности И для лучшего удобства пользователей. Вот один макрос, который отобразит все строки из активной рабочей таблицы:

3. Удаление пустых строк и столбов

Пустые строки в Excel - может быть проблемой для обработки данных. Вот как избавиться от них:

4. Нахождение пустых ячеек

13. Создание сводной таблицы

Вот как создать сводную таблицу в MS Excel (версия 2007). Особенно полезно, когда вы делаете индивидуальный отчет каждый день. Вы можете оптимизировать создание сводной таблицы следующим образом:

14. Отправка активного файла по электронной почте

15. Вставка всех графиков Excel в презентацию PowerPoint

Очень удобный макрос, который позволяет вам добавлять все ваши графики Excel в презентацию Powerpoint одним щелчком мыши:

16. Вставка таблицы Excel в MS Word

Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:

17. Извлечение слов из текста

Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():

Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.

18. Защита данных в MS Excel

Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:

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

Читайте также: