Доброго времени суток! Подскажите пожалуйста: Есть список что, кому и сколько нужно (экспорт из другой программы), который очень хотелось бы отсортировать поскольку работать с ним в таком виде очень не просто - в глазах начинает рябить. Было бы удобно разбить список на 4 категории (по степени срочности). Пример файла в приложении. Уважаемы форумчане, большая просьба помочь, поскольку выполнять такую задачу вручную очень утомительно и дискомфортно физически.
С уважением, SysUnit.
Доброго времени суток! Подскажите пожалуйста: Есть список что, кому и сколько нужно (экспорт из другой программы), который очень хотелось бы отсортировать поскольку работать с ним в таком виде очень не просто - в глазах начинает рябить. Было бы удобно разбить список на 4 категории (по степени срочности). Пример файла в приложении. Уважаемы форумчане, большая просьба помочь, поскольку выполнять такую задачу вручную очень утомительно и дискомфортно физически.
Из файла непонятен приоритет отделов и критерий отбора. Исходя из каких условий назначается признак "В первую очередь"? Исходя из количества предметов!? Т.е. если необходим один карандаш и 29 ластиков в общий отдел , то это важнее, чем покупка 15 авторучек в бухгалтерию?
Из файла непонятен приоритет отделов и критерий отбора. Исходя из каких условий назначается признак "В первую очередь"? Исходя из количества предметов!? Т.е. если необходим один карандаш и 29 ластиков в общий отдел , то это важнее, чем покупка 15 авторучек в бухгалтерию?igrtsk
Инструктор по применению лосей в кавалерийских частях РККА
Исходя из каких условий назначается признак "В первую очередь"?
Вы абсолютно правы - исходя из количества предметов. Согласен, что это не комильфо, но поскольку это очень объёмная работа, а между очередями проходит не слишком много времени, то решили, что пусть будет так. Но пока даже такую задачу приходится делать вручную - очень утомительно
Исходя из каких условий назначается признак "В первую очередь"?
Вы абсолютно правы - исходя из количества предметов. Согласен, что это не комильфо, но поскольку это очень объёмная работа, а между очередями проходит не слишком много времени, то решили, что пусть будет так. Но пока даже такую задачу приходится делать вручную - очень утомительно
Попытался максимально формализовать алгоритм, но, вообще говоря, подойдёт любой алгоритм классификации, главное, чтобы очереди не пустовали. Классификация работает так: считаем сумму для каждого значения: Общий отдел 30 Отдел кадров 24 .... Глав. Бух. 12
Находим максимум (30), минимум (12), середину (21) и шаг (Макс - Мин / 4 = 4.5) Записываем в каждую группу по одному значению (для максимума и минимума они есть автоматически, а для двух других одно любое значение меньше середины и больше середины, а затем классифицируем остальные значения в пределах шага.
С уважением, SysUnit.
Попытался максимально формализовать алгоритм, но, вообще говоря, подойдёт любой алгоритм классификации, главное, чтобы очереди не пустовали. Классификация работает так: считаем сумму для каждого значения: Общий отдел 30 Отдел кадров 24 .... Глав. Бух. 12
Находим максимум (30), минимум (12), середину (21) и шаг (Макс - Мин / 4 = 4.5) Записываем в каждую группу по одному значению (для максимума и минимума они есть автоматически, а для двух других одно любое значение меньше середины и больше середины, а затем классифицируем остальные значения в пределах шага.
М-да, я не большой специалист, но мне кажется, что что-то очень громоздкое получится при имеющемся у вас экспорте. Ибо, чтобы макрос мог отделить мух от котлет, придется создавать отдельную библиотеку всех ваших отделов (прошу прощения за тафталогию), так как макрос обязан "понимать", что Глав.бух. - это отдел, а не канцелярская принадлежность И возможно вам придется обращаться в раздел фриланс, чтобы кто-то взялся городить этого монстра. А вот если бы в процесс формирования результатов экспорта внести незначительны изменения (в название отделов, представив их, скажем, в виде Отдел_Общий или Отдел_Бухгалтерия. Чтобы везде в названии присутствовало слово Отдел или иной одинаковый атрибут ), то задачка решилась бы гораздо проще.
М-да, я не большой специалист, но мне кажется, что что-то очень громоздкое получится при имеющемся у вас экспорте. Ибо, чтобы макрос мог отделить мух от котлет, придется создавать отдельную библиотеку всех ваших отделов (прошу прощения за тафталогию), так как макрос обязан "понимать", что Глав.бух. - это отдел, а не канцелярская принадлежность И возможно вам придется обращаться в раздел фриланс, чтобы кто-то взялся городить этого монстра. А вот если бы в процесс формирования результатов экспорта внести незначительны изменения (в название отделов, представив их, скажем, в виде Отдел_Общий или Отдел_Бухгалтерия. Чтобы везде в названии присутствовало слово Отдел или иной одинаковый атрибут ), то задачка решилась бы гораздо проще.igrtsk
Инструктор по применению лосей в кавалерийских частях РККА
Сообщение отредактировал igrtsk - Среда, 16.04.2014, 16:36
Ну, что же, можно подискутировать на эту тему Замените в названии отделов пробел, скажем, на точку или подчеркивание. затем используйте встроенную функцию excel: текст по столбцам. Благо, что цифры у вас отделены пробелами. Получите традиционную таблицу: 1-й столбец - название, 2-й столбец - количество А дальше откроется огромное поле для творчества, начиная с условного форматирования и т.п. Вполне возможно обойдетесь и без макроса.
Ну, что же, можно подискутировать на эту тему Замените в названии отделов пробел, скажем, на точку или подчеркивание. затем используйте встроенную функцию excel: текст по столбцам. Благо, что цифры у вас отделены пробелами. Получите традиционную таблицу: 1-й столбец - название, 2-й столбец - количество А дальше откроется огромное поле для творчества, начиная с условного форматирования и т.п. Вполне возможно обойдетесь и без макроса.igrtsk
Инструктор по применению лосей в кавалерийских частях РККА
Сообщение отредактировал igrtsk - Среда, 16.04.2014, 16:43
Sub ertert() Dim x, i&, sm&: Application.ScreenUpdating = False With Range("A1").CurrentRegion.Resize(, 2) x = .Value For i = UBound(x) To 1 Step -1 If x(i, 1) Like "*[0-9]" Then sm = sm + Val(Mid(x(i, 1), InStrRev(x(i, 1), " "))) x(i, 2) = "=R[-1]C" Else x(i, 2) = sm: sm = 0 End If Next .Value = x .Sort Key1:=.Cells(1, 2), Order1:=xlDescending .Columns(2).ClearContents End With: Application.ScreenUpdating = True End Sub
[/vba] в файле нажимайте зеленую кнопку. ПС SysUnit, как называется цветовая схема в вашем Excel?
можно вот так попробовать: [vba]
Код
Sub ertert() Dim x, i&, sm&: Application.ScreenUpdating = False With Range("A1").CurrentRegion.Resize(, 2) x = .Value For i = UBound(x) To 1 Step -1 If x(i, 1) Like "*[0-9]" Then sm = sm + Val(Mid(x(i, 1), InStrRev(x(i, 1), " "))) x(i, 2) = "=R[-1]C" Else x(i, 2) = sm: sm = 0 End If Next .Value = x .Sort Key1:=.Cells(1, 2), Order1:=xlDescending .Columns(2).ClearContents End With: Application.ScreenUpdating = True End Sub
[/vba] в файле нажимайте зеленую кнопку. ПС SysUnit, как называется цветовая схема в вашем Excel?nilem
Как? Алгоритм действий вообще не понятен, к сожалению. Можете привести пример?
Еще один вопрос для понимания ситуации: номенклатура канцелярских принадлежностей в программе, которая формирует итоговые данные кому и сколько надо, - фиксированная или меняется от случая к случаю?
Как? Алгоритм действий вообще не понятен, к сожалению. Можете привести пример?
Еще один вопрос для понимания ситуации: номенклатура канцелярских принадлежностей в программе, которая формирует итоговые данные кому и сколько надо, - фиксированная или меняется от случая к случаю?igrtsk
Инструктор по применению лосей в кавалерийских частях РККА
Насколько я понял, страничка результатов вам нужна для визуальной оценки потребности отделов и принятия решения кого обеспечить в первую очередь, а не для дальнейшей машинной обработки. По этой причине я взял на себя смелость видоизменить отображение конечных результатов со следующими критериями: если отделу необходимо получить более 25 и более предметов - это в первую очередь и ячейка подсвечивается красным если отделу необходимо получить от 15 до 25 предметов - это вторая очередь и ячейка подсвечивается оранжевым если отделу необходимо получить менее 15 ипредметов - это третья очередь и ячейка подсвечивается зеленым
Насколько я понял, страничка результатов вам нужна для визуальной оценки потребности отделов и принятия решения кого обеспечить в первую очередь, а не для дальнейшей машинной обработки. По этой причине я взял на себя смелость видоизменить отображение конечных результатов со следующими критериями: если отделу необходимо получить более 25 и более предметов - это в первую очередь и ячейка подсвечивается красным если отделу необходимо получить от 15 до 25 предметов - это вторая очередь и ячейка подсвечивается оранжевым если отделу необходимо получить менее 15 ипредметов - это третья очередь и ячейка подсвечивается зеленымigrtsk
igrtsk, спасибо огромное! Всё отлично работает, только при небольшом изменении структуры столбца - в графе Пять (изменил название для удобства ссылок) учитывается итог из Шесть
С уважением.
igrtsk, спасибо огромное! Всё отлично работает, только при небольшом изменении структуры столбца - в графе Пять (изменил название для удобства ссылок) учитывается итог из Шесть