Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос для вставки формулы суммирования произвольного диапазона
 
Казанский, спасибо за ликбез! Буду учиться...

Не совсем понял про C:R[-1]C, если C обозначает тот же столбец, то выходит R[-1]C транслируется в номер столбца... а хотя, нет, кажется, всё понял!

Если всю формулу взять с учётом Вашего пояснения, то получится что то типа
=SUM(R(# строки последней ячейки с цифрой)С(текущий столбец):R(# строки ячейки на одну выше текущей)С(текущий столбец)
например =SUM(R2C:R9C)

Ещё раз большое спасибо!
Макрос для вставки формулы суммирования произвольного диапазона
 
Казанский, Спасибо Огромное, последний вариант, то что надо!
Сразу видно Мастера своего дела :)
Посоветуйте, пожалуйста,  учебник по VBA для начинающего!

Хотел бы уточнить:
Цитата
Then Exit For
Это видимо оператор выхода из цикла когда находит первую пустую, либо нечисловую ячейку при просмотре по строчкам вверх (и номер строки при этом сохраняется в переменную x)?

И вот эту конструкцию совсем не понял:
Код
"=SUM(R" & x + 1 & "C:R[-1]C)"

1. я думал там должны быть ещё скобки по синтаксису для левой границы сложения "=SUM(R[" & x + 1 &"] "&C:R[-1]C)"? Но почему то и так работает без скобок?
2. "C:R[-1]C" - как вот эту нотацию понять?! R[-1] это ячейка на 1 строку выше ActiveCell в том же столбце, как я понимаю, а вот "С:_С" по краям что означает?
Изменено: realalexandro - 24.12.2016 12:03:13
Макрос для вставки формулы суммирования произвольного диапазона
 
Казанский, ага, это уже ближе в смысле формулы, спасибо за пример!
Суммирует и формулу ставит, только немного неправильно, что "захватывает" суммой все ячейки с первой ячейки столбца сверху страницы, а не только там где числа.
Тут если, столбец чисел, которые нужно просуммировать находится вверху, либо даже заголовок это столбца в верхней ячейке, то всё ок работает, но вот если там другие числовые данные выше или таблица отдельная (бывает, что на одном листе несколько таблиц находится сверху вниз), то, конечно некорректно получится.

А нельзя ли через RC адресацию как то выразить адрес не просто первой ячейки сверху в данном столбце, а именно первой ячейке в которой есть число?! Ну может как то циклом найти первое число и запомнить номер строки, где оно есть, а затем вставить в эту формулу суммы вместе RC или как то по другому?
Изменено: realalexandro - 24.12.2016 01:13:08
Макрос для вставки формулы суммирования произвольного диапазона
 
Юрий М, не уверен, но проверил Ваш код. Он правильно считает сумму по столбцу, но при изменении значений автоматом сумма не меняется.
Про событийные процедуры ничего не знаю к сожалению. В смысле знания VBA, если Вы олимпийский пловец, то я, считайте впервые только намочил ногу, причём левую, причём только краешек )) Так что не пугайте меня такими терминами ))
На практике, Вы уж мне поверьте, если в ячейке нет формулы, большинство пользователей даже не поймёт, что эта ячейка представляет собой сумму, - решат, что одно из значений в столбце, просто большое, поэтому ненаглядно!
Может быть как то можно всё таки вставку формулы через макрос сделать, "захватив" нужный диапазон чисел?!
Макрос для вставки формулы суммирования произвольного диапазона
 
Цитата
Юрий М написал:
Это я неправильно понял? А кто просил ВЫДЕЛИТЬ диапазон?
Это в том смысле, чтобы в формулу попал т.е. подставился весь диапазон, я выразился не точно.
Цитата
Да зачем формула, когда УЖЕ есть макрос?
Затем, что если значения в столбце будут меняться, формула пересчитает автоматически, а значение само не поменяется, пока 2й раз макрос не запустишь!
Макрос для вставки формулы суммирования произвольного диапазона
 
Юрий М, нет нет, не правильно поняли, выделять ничего не надо, просто чтобы в ячейке было не значение, а формула типа СУММ(диапазон ячеек сверху) равная тому же значению, которое получается через Ваш код.
Макрос для вставки формулы суммирования произвольного диапазона
 
Юрий М, спасибо за пример, но хотелось бы, чтобы он не только результат суммирования показывал в ячейке как значение, но формулу туда вставлял, выделяя нужный диапазон!
Макрос для вставки формулы суммирования произвольного диапазона
 
Уважаемые форумчане, добрый вечер!

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

Собственно, застопорился, на элементарном примере, задача - через VBA-код реализовать ТО ЖЕ САМОЕ ЧТО ДЕЛАЕТ сочетание клавиш Alt+
т.е. сложение всех чисел в столбце находящихся выше выделенной ячейки  (в эту самую ячейку надо поместить сумму этих чисел).
По условию:
1. Числа могут идти в любом столбце (A, B, ...), из какого столбца суммируем определяем по выделенной в данный момент ячейке, выше которой, как предполагается находятся числа для суммирования, которые в столбце идут без пропусков,
2. Числа могут начинаться с произвольной строчки т.е. не обязательно сверху листа
3. Их может быть от 1 до N в пределах системных ограничений Эксель
4. Над первым числом может идти поле заголовка (таблицы) типа "Продажи", "Прибыль" и.т.д., либо его может не быть т.е. просто сверху вниз в столбце идут числа
5. Формула суммы чисел вписывается в первую пустую ячейку под ними, куда предварительно ставим курсов до запуска макроса.

Суть вопроса:
Макрорекордер при записи макроса сгенерил следующий код:
Код
Sub Macro23()
    ActiveCell.FormulaR1C1 = "=SUM(R[-22]C:R[-1]C)"
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Этот пример прекрасно сработал для одного конкретного диапазона, на котором я собственно записывал макрос, но если чисел в столбце, больше\меньше, чем в этом примере, то разумеется, корректно складывать не будет, это вижу даже я т.к. он вставляет формулу суммы через относительные ссылки в ячейку и при этом жёстко фиксирует диапазон, подлежащий сложению.
Проблема в том, что когда записываешь макрос, он не понимает что ты через Alt+ или функцией СУММ и Ctrl+стрелкой хочешь захватить весь диапазон чисел для суммирования (сколько бы их ни было в конкретном случае) и тупо подсчитывает сколько конкретно строчек просуммировалось для текущего случая и фиксирует это в макросе!
Умом понимаю, что надо как то найти и запомнить в переменной положение самой верхней и самой нижней цифры диапазона суммирования (т.е. их адреса ячеек) и уже дальше эти переменные вставлять в ту формулу суммы, которую через макрос вводим в нужную ячейку, но как это сделать, увы, не знаю! :(

Кто знает, подскажите, как это сделать, пожалуйста. Возможно код должен быть гораздо сложнее, чем это...

Знаю, что это ерунда, а не задача, но я пока пробую самое простое, по отрывочным сведениям в сети, совершенно не разобрался с выделением диапазонов\ячеек и доступом к их свойствам...

И, кстати, был бы очень благодарен, если бы Вы могли посоветовать полноценную, не совсем для "чайников", но при этом хотя бы в меру короткую и доходчивую книгу по макросам\VBA для изучения с обилием примеров.
Уокенбах, конечно, крутой, но пока в нём найдёшь нужный раздел, это пипец... ))
Лет 10 назад занимался программированием в универе (Паскаль, С\С++, Java), но с тех пор от этого полностью отошёл и много чего забыл очевидно, так что в коде в принципе смогу разобраться, но на сложном материале скорее всего буду тупить...
Ошибка сценария при импорте в Excel с Web страницы
 
Jungl, в смысле макрорекордером?!
Я им и воспользовался для первого скрипта.
Записал сначала "пустой" макрос, потом внутрь кода в режиме "Разработчик" открыл этот пустой макрос и вставил Ваш код, потом запустил и увидел, что он
делает. Или что то не так я сделал?

Второй вариант обязательно сравню уже непосредственно по изменениям кода, Вам спасибо!
Ошибка сценария при импорте в Excel с Web страницы
 
Игорь, спасибо большое!

Значит Вы были правы! У меня по галочкам то же самое. И импорт то всей страницы проходит без проблем (именно всей, а не отдельных областей).
Ошибка сценария возникает лишь при нажатии в окне импорта кнопки "Пуск", которая по идее ДОЛЖНА БЫЛА БЫ разложить сайт по областям, помеченным стрелочками (также и в учебнике написано).

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

Если я правильно эту идею понял, тогда, конечно, и вопроса больше нет.  :)
Ошибка сценария при импорте в Excel с Web страницы
 
Jungl, спасибо за пример! "Воткнуть" его в макрос и запустить у меня ума хватило, хотя сам код понять мне пока сложновато. :)

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

Я так понимаю через скрипт тоже сложно регулировать какую именно таблицу хотим "подгрузить" с сайта, поскольку, очевидно это зависит от структуры определённой и нужен парсер?!
Тогда нет смысла заморачиваться для моих скромных целей  :sceptic:

В общем вроде бы теперь я начинаю понимать, что проблема моя не в Экселе и не в Виндоусе, а в несовершенстве встроенного импорта, который понимает только "табличную" структуру, которой теперь мало кто пользуется, так ведь?!
Ошибка сценария при импорте в Excel с Web страницы
 
Забавно, мне ответил Игорь и я его попросил проверить, а теперь Вы мне отвечаете, что "мой сайт не проверяли", поскольку у Вас ошибки при импорте всегда или почти всегда.

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

Если это так, то это очень странно, потому что я даже в учебнике не таком старом нашёл вот такой пример, как раз для сайта на котором я пробую импорт:
Ошибка сценария при импорте в Excel с Web страницы
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Ок, нажать не проблема, я бы не стал по этому поводу тему создавать и беспокоить людей  :)
Да, но я не так давно своими глазами видел, как эти жёлтые стрелочки появляются при импорте данных у человека на др. компьютере и на том же сайте cbr.ru и отдельные таблицы импортировались без проблем )
Если дело в том, что это сайт НЕ сделан под табличную вёрстку, тогда функционал стандартного импорта считай, что почти бесполезен...
Не могли бы Вы у себя проверить вылезет ли такая же ошибка скрипта при попытке импорта на сайте cbr.ru?
Ошибка сценария при импорте в Excel с Web страницы
 
Цитата
SuperCat написал: А пора
Слушайте, я очень ценю, что для простого СТАНДАРТНОГО импорта данных, который УЖЕ ЗАШИТ в функционале эксель, Вы мне предлагаете писать парсер и изучать VBA, ПОСКОЛЬКУ ПРЯМОГО ОТВЕТА НА МОЙ ВОПРОС ОЧЕВИДНО НЕ ЗНАЕТЕ  :D ... ну так не знаете, хоть не отвечайте  ;)

Уважаемые форумчане, может быть кто нибудь более простое решение знает?!
Не пойму даже где копать... то ли в винде дело, то ли в каких то dll библиотеках, то ли в реестре, то ли в Excel...
Ошибка сценария при импорте в Excel с Web страницы
 
Я ж говорю, не владею VBA... :(
Ошибка сценария при импорте в Excel с Web страницы
 
Увы, VBA, я совсем не знаю во-первых.
Во-вторых есть стандартный функционал, который на нескольких др. компьютерах я видел вполне работающим...
Хотелось бы обойтись без "танцев с бубном"! Мне всего то курсы валют, да котировки иногда подтягивать надо, но в принципе может понадобиться и что то более сложное, поэтому хочу понять в чём причина такого беспредела с импортом :)
Ошибка сценария при импорте в Excel с Web страницы
 
Выбираю опцию "Получение внешних данных из интернета", по умолчанию в Excel при импорте сайты открывает IE.
Так вот всё время при заходе на сайт с нужной мне инфой (например cbr.ru или finmarket.ru) вылезают окна с различными "ошибками сценария"!
Например ""ошибка сценария yaCounter5774506" не определено" или сразу несколько ошибок сценария таких как "Объект не поддерживает свойство или метод some",
"Объект не поддерживает свойство или метод querySelector" и.т.д.
Такая же "петрушка" на всех сайтах, при этом просто в IE вне экселя эти сайта без ошибок открываются без всяких проблем.

В итоге импортировать получается только страницу целиком и приходится вручную чистить лишнюю информацию т.е. нельзя стандартным образом выбирать отдельные таблицы\области т.к. не появляются "жёлтые стрелочки" для выбора отдельных объектов страницы.

Все обновления Windows 7\Excel 2013 стоят. Не пойму в чём дело. Погуглил, толком ответов нигде нет.

Эксперты Помогите, пожалуйста!
Подскажите, кто знает, как задать точный размер по ширине и высоте для области построения диаграммы в Excel 2013?, Как настроить размер области построения диаграммы и её расположение в точности как в исходнике с такими же пропорциями как в исходнике?
 
Цитата
Kuzmich написал:
Конечно, потянули по вертикали или по горизонтали и сделали нужный размер
Только что обнаружил. Самое интересное, что для некоторых др. типов диаграмм Excel 2013 тоже позволяет это делать, например, для Линейчатой с Группировкой без проблем меняется область построения по обеим осям независимо... видимо я случайно наткнулся на какой то пробел в настройке определённого отдельного типа диаграмм.
Подскажите, кто знает, как задать точный размер по ширине и высоте для области построения диаграммы в Excel 2013?, Как настроить размер области построения диаграммы и её расположение в точности как в исходнике с такими же пропорциями как в исходнике?
 
Цитата
Kuzmich написал:
Может в  Excel 2013 это делается как-то по другому, но в 2003 ткнул в область построения диаграммы-выделилась
эта область, тяните  за черные прямоугольники до нужных размеров
И можно независимо настраивать длину и ширину области построения в 2003?!

Посмотрел вроде в OpenOffice тоже это делается без проблем.
То ли куда то засунули эту настройку в предпоследней версии продукта Майкрософт, то ли посчитали это ненужным и убрали... вроде логично, чтобы размер области построения настраивался так же, как и размер области Диаграммы, но такого нет... идиотизм какой то!
Подскажите, кто знает, как задать точный размер по ширине и высоте для области построения диаграммы в Excel 2013?, Как настроить размер области построения диаграммы и её расположение в точности как в исходнике с такими же пропорциями как в исходнике?
 
Цитата
Sanja написал:
Можно макросом. Например. Можно и другие свойства и свойства других элементов менять макросом. Можно макросом сразу строить диаграмму с предопределенными свойствами элементов. Полет фантазии...
Спасибо, вроде получилось! Даже несмотря на то, что я, скажем так, пока что с VBA очень на "Вы", код я понял и нашёл как запустить.

Однако, остаются вопросы:

1. Не могли бы Вы, если Вам не сложно, модифицировать код макроса, чтобы ещё и относительное положение Области Построения Диаграммы внутри Области Диаграммы-примера так же можно было "считать" и потом "прописать" в свойствах второй диаграммы?

2. Неужели это единственный возможный способ откорректировать размер области построения через VBA\макрос?! Может быть всё таки есть более простой штатный метод без VBA?
Кроме того, судя по коду, нужно будет под каждый случай переписывать в коде названия диаграмм к свойствам которых обращаемся (если будет не Диаграмма 2, Диаграмма 3, а Диаграмма NN и.т.д.)

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

Особенно интересует второй вопрос. Никто не подскажет?!
Изменено: realalexandro - 08.11.2016 19:25:56
Подскажите, кто знает, как задать точный размер по ширине и высоте для области построения диаграммы в Excel 2013?, Как настроить размер области построения диаграммы и её расположение в точности как в исходнике с такими же пропорциями как в исходнике?
 
Цитата
Sanja написал:
Двойной щелчок по области диаграммы (по самой рамке) - Откроется окно с различными свойствами области - Размер

Речь не об области Диаграммы, а об Области Построения Диаграммы - это разные вещи!
Свойство "Размер" доступно для области Диаграммы в целом, и этот размер я настроил без проблем, а вот для области Построения (окошко внутри области диаграммы, где располагается сам рисунок) такого свойства не предусмотрено.
Подскажите, кто знает, как задать точный размер по ширине и высоте для области построения диаграммы в Excel 2013?, Как настроить размер области построения диаграммы и её расположение в точности как в исходнике с такими же пропорциями как в исходнике?
 
Помогите, пожалуйста, Уважаемые эксперты!

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

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

Сама диаграмма очень простая (Тип - Вторичная линейчатая на основе одного ряда данных).
Смог разобраться как полностью повторить стиль\компоновку диаграммы-эталона,
КРОМЕ ОДНОГО - КАКИМ ОБРАЗОМ УСТАНОВИТЬ ТОЧНЫЙ РАЗМЕР И РАСПОЛОЖЕНИЕ
ОБЛАСТИ ПОСТРОЕНИЯ ДИАГРАММЫ
(Т.Е. ТОЙ ОБЛАСТИ ВНУТРИ ОБЪЕКТА "ДИАГРАММА", ГДЕ СОБСТВЕННО РАСПОЛАГАЕТСЯ РИСУНОК)?!

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

Где настраиваются точные размеры и\или соотношения сторон для области построения в Excel 2013 не нашёл.
В параметрах области построения есть только заливка и граница, в формате ряда данных собственно для рисунка только расположение двух элементов рисунка друг относительно друга, но не относительно границ области построения.
По яндексу\гуглу также ответа за несколько часов не разыскал, здесь по форуму вроде бы тоже похожих топиков нет.

Так что, просьба, сильно не пинать за такой вроде бы элементарный вопрос! )
Страницы: 1
Наверх