Отличное решение. Я периодически с этим связан по работе и данный макрос (для меня для юзера) интересен. Если тема здесь еще жива, прошу чуть "модернизировать" и тогда это будет по истине шедевр решения. Я осмелюсь заявить, что лучшее решение в интернете. (Inventor я тестировал, но результат скуп и сложен в вводных) Что хотелось бы добавить в "ABC.xls": 1. Обязательно: номер верхней строки с названием столбцов (она не всегда первая и может быть намного ниже) 2. Обязательно: выбор столбцов для анализа (часто нужно из 12 месяцев проанализировать последние 4. Сейчас это не возможно, если не удалить первые 8) 3. Обязательно: оставить в итоге формулы вычисления (для правок, часто это нужно (например период изменить по одной из позиций)) 4. Для красоты график/диаграмму (например круговой долей по ABC)
P.S. Есть ли похожее ?
Цитата
Мое детище:Саня
К сообщению приложен файл: ABC.xls(84Kb)
Отличное решение. Я периодически с этим связан по работе и данный макрос (для меня для юзера) интересен. Если тема здесь еще жива, прошу чуть "модернизировать" и тогда это будет по истине шедевр решения. Я осмелюсь заявить, что лучшее решение в интернете. (Inventor я тестировал, но результат скуп и сложен в вводных) Что хотелось бы добавить в "ABC.xls": 1. Обязательно: номер верхней строки с названием столбцов (она не всегда первая и может быть намного ниже) 2. Обязательно: выбор столбцов для анализа (часто нужно из 12 месяцев проанализировать последние 4. Сейчас это не возможно, если не удалить первые 8) 3. Обязательно: оставить в итоге формулы вычисления (для правок, часто это нужно (например период изменить по одной из позиций)) 4. Для красоты график/диаграмму (например круговой долей по ABC)
форму запускать Ctrl+Shift+S выделяем диапазон для анализа - только цифры, можно выделить внутри таблицы можно предварительно выделить необх. диапазон жмем "Выполнить"
на форме присутствует контрол RefEdit - мутный "тип", вылетал Excel на раз, поэтому пробовать без других открытых книг если будет у других падать, переделаю на более "деревянный" вариант
красоту не досуг делать
почти универсально по расположению данных.
форму запускать Ctrl+Shift+S выделяем диапазон для анализа - только цифры, можно выделить внутри таблицы можно предварительно выделить необх. диапазон жмем "Выполнить"
на форме присутствует контрол RefEdit - мутный "тип", вылетал Excel на раз, поэтому пробовать без других открытых книг если будет у других падать, переделаю на более "деревянный" вариант
Хочу высказать мнение. 1. Зона ABC обозначается в массовой трактовке не (AB=50% и BC=80%), а A=20%, B=50% C=100% (или остальные%). В принципе это то же, но более правильный мой вариант и он описан везде. Даже % практически такой же. Это принцип Паретто, где 20% действий отвечают за 80% причин (как раз категория А). 2. Зона XYZ то же должна идти как X=10%, Y=25%, Z=100% (или остальные) 3. Форма с выбором диапазона - отлично, но вылет ошибки можно убрать, добавив On Error Resume Next 4. Столбик ABC&XYZ нужно все таки доделать и прописать функцию =СПЕПИТЬ() 5. Шапка таблицы оказывается внизу, а должна быть вверху. Не удобство однако. 6. Ну и красоту все таки бы навести.
P.S. Можно конечно все самому ручками сделать, но мы ведь за "готовое решение" бьемся...
Хочу высказать мнение. 1. Зона ABC обозначается в массовой трактовке не (AB=50% и BC=80%), а A=20%, B=50% C=100% (или остальные%). В принципе это то же, но более правильный мой вариант и он описан везде. Даже % практически такой же. Это принцип Паретто, где 20% действий отвечают за 80% причин (как раз категория А). 2. Зона XYZ то же должна идти как X=10%, Y=25%, Z=100% (или остальные) 3. Форма с выбором диапазона - отлично, но вылет ошибки можно убрать, добавив On Error Resume Next 4. Столбик ABC&XYZ нужно все таки доделать и прописать функцию =СПЕПИТЬ() 5. Шапка таблицы оказывается внизу, а должна быть вверху. Не удобство однако. 6. Ну и красоту все таки бы навести.
P.S. Можно конечно все самому ручками сделать, но мы ведь за "готовое решение" бьемся...Rama
Сообщение отредактировал Rama - Среда, 04.09.2013, 17:12
1. я трактовал всегда так: категория А - 50%, В - след. 30% и С - последние 20% если нужны по-умолчанию другие величины, зайдите в VBE и поменяйте значения текстовых полей. Логика построения анализа не изменится.
2. если в АВС есть некая свобода выбора границ, то с XYZ все несколько строже: 33% - это 1/3, где 3 - это грубое значение критического уровня статистики Стьюдента, и все это интерпретируется так: стационарность = значимость
3. какая ошибка вылетает? обработчик ошибок вряд ли спасет от падения всего приложения
6. одно дело готовый шаблон, другое ваши хотелки, завтра кто-нибудь скажет, что хочет, чтобы категория А была зеленым цветом, а В коричневым.
1. я трактовал всегда так: категория А - 50%, В - след. 30% и С - последние 20% если нужны по-умолчанию другие величины, зайдите в VBE и поменяйте значения текстовых полей. Логика построения анализа не изменится.
2. если в АВС есть некая свобода выбора границ, то с XYZ все несколько строже: 33% - это 1/3, где 3 - это грубое значение критического уровня статистики Стьюдента, и все это интерпретируется так: стационарность = значимость
3. какая ошибка вылетает? обработчик ошибок вряд ли спасет от падения всего приложения
6. одно дело готовый шаблон, другое ваши хотелки, завтра кто-нибудь скажет, что хочет, чтобы категория А была зеленым цветом, а В коричневым.
Уважаемый Саня, прошу прощения за настойчивость, но очень хочется пользоваться Вашим последним решением, но нет такой возможности. Дело в том, что я пытаюсь Ваше решение перенести себе в надстройку (сборник решений подобного рода) и запускать от туда, но мне выдает ошибки. То есть работать можно только с Вашим файлом, но переносить туда массив не удобно. Есть ли подсказка ?
Ошибка на 4-ой строчке --------------- доли (+) ------------------ [vba]
Код
bFirst = True For Each cell In rngOut.Offset(, 1) If bFirst Then cell = cell.Offset(0, -1) / dALL 'Ошибка на этой строке bFirst = False Else cell = cell.Offset(0, -1) / dALL + cell.Offset(-1, 0) End If cell = Round(cell, 3) Next cell
[/vba] [admin]Rama, оформляйте коды тегами, во избежание бана![/admin]
Уважаемый Саня, прошу прощения за настойчивость, но очень хочется пользоваться Вашим последним решением, но нет такой возможности. Дело в том, что я пытаюсь Ваше решение перенести себе в надстройку (сборник решений подобного рода) и запускать от туда, но мне выдает ошибки. То есть работать можно только с Вашим файлом, но переносить туда массив не удобно. Есть ли подсказка ?
Ошибка на 4-ой строчке --------------- доли (+) ------------------ [vba]
Код
bFirst = True For Each cell In rngOut.Offset(, 1) If bFirst Then cell = cell.Offset(0, -1) / dALL 'Ошибка на этой строке bFirst = False Else cell = cell.Offset(0, -1) / dALL + cell.Offset(-1, 0) End If cell = Round(cell, 3) Next cell
[/vba] [admin]Rama, оформляйте коды тегами, во избежание бана![/admin]Rama
Я скопировал все модули и форму в свою надстройку. Запустил форму на Вашем массиве. Появилась эта ошибка:
Я ее закомментировал и все далее заработало, но...если к Вашему массиву добавить несколько пустых столбцов в начале (то есть сдвинуть массив чуть правее), то получится наложение (столбик с декабрем уехал...)
Если ни чего ни куда не копировать, и работать только с Вашим файлом, то если сдвинуть массив, ошибка на dAll (пост 8) и dAll=0
Я скопировал все модули и форму в свою надстройку. Запустил форму на Вашем массиве. Появилась эта ошибка:
Я ее закомментировал и все далее заработало, но...если к Вашему массиву добавить несколько пустых столбцов в начале (то есть сдвинуть массив чуть правее), то получится наложение (столбик с декабрем уехал...)
Если ни чего ни куда не копировать, и работать только с Вашим файлом, то если сдвинуть массив, ошибка на dAll (пост 8) и dAll=0Rama
Сообщение отредактировал Rama - Воскресенье, 08.09.2013, 09:44
Кто подскажет, что нужно в макросе надстройки (сообщение 5) поменять, что бы данные анализа выводились не с столбцы начиная с "S" и далее, а с следующего после анализируемого диапазона. Ситуация в том, что если таблица с данными размещается далее столбца "S", то появляется ошибка и анализ не работает, т.к. происходит наложение таблицы на результат. Прошу помочь, т.к. у меня массив более, чем в примере.
Кто подскажет, что нужно в макросе надстройки (сообщение 5) поменять, что бы данные анализа выводились не с столбцы начиная с "S" и далее, а с следующего после анализируемого диапазона. Ситуация в том, что если таблица с данными размещается далее столбца "S", то появляется ошибка и анализ не работает, т.к. происходит наложение таблицы на результат. Прошу помочь, т.к. у меня массив более, чем в примере.Rama
AndreTM, отлично. Мои Вам благодарности. Это действительно логичное дополнение.
Обращение ко всем: Есть еще одна идея, она имеет место быть из разряда обязательных. Есть ли возможность в самой форме сделать возможным использовать только ABC или только XYZ (c сортировкой естественно), т.к. часто использую только один из анализов. Конечно, можно использовать без изменений, но потом удалить лишнее не сложно, а вот перекрашивать шрифт и менять сортировку уже процесс достаточно долгий.
AndreTM, отлично. Мои Вам благодарности. Это действительно логичное дополнение.
Обращение ко всем: Есть еще одна идея, она имеет место быть из разряда обязательных. Есть ли возможность в самой форме сделать возможным использовать только ABC или только XYZ (c сортировкой естественно), т.к. часто использую только один из анализов. Конечно, можно использовать без изменений, но потом удалить лишнее не сложно, а вот перекрашивать шрифт и менять сортировку уже процесс достаточно долгий.Rama
RAN, я не хочу вступать в дискуссии на тему "что я прошу помочь" и "кто мне помогает". Это мое личное дело здесь на форуме, и дело тех, кто отзывается о помощи и помогает. Готовое решение лежит в первых постах и его никто не удаляет, все остальное это процесс творчества, дискуссий и обсуждений. Если этот форум для других целей, то нужно об этом писать, что он отличается от других тем-то и тем.
P.S. Будет не справедливо к автору, если я эту тему перенесу на другой форум. Кто от этого выиграет ?
RAN, я не хочу вступать в дискуссии на тему "что я прошу помочь" и "кто мне помогает". Это мое личное дело здесь на форуме, и дело тех, кто отзывается о помощи и помогает. Готовое решение лежит в первых постах и его никто не удаляет, все остальное это процесс творчества, дискуссий и обсуждений. Если этот форум для других целей, то нужно об этом писать, что он отличается от других тем-то и тем.
P.S. Будет не справедливо к автору, если я эту тему перенесу на другой форум. Кто от этого выиграет ?Rama
Сообщение отредактировал Rama - Среда, 02.10.2013, 20:36
Не согласен с этим полностью, но буду "дублировать" тему в другой ветке, ок. Мне кажется что не логично будет каждое модернизированное (улучшенное) решение заново публиковать в "готовых решениях", при том, что решений может быть много и все они рассчитаны на разные ситуации, но все они бесспорно будут иметь статус "готового решения".
Не согласен с этим полностью, но буду "дублировать" тему в другой ветке, ок. Мне кажется что не логично будет каждое модернизированное (улучшенное) решение заново публиковать в "готовых решениях", при том, что решений может быть много и все они рассчитаны на разные ситуации, но все они бесспорно будут иметь статус "готового решения".Rama