Столкнулся с проблемой при создании таблицы, постараюсь объяснить подробно. Представим, что у нас есть несколько сотрудников, которые работают по разным группам определённое кол-во времени, на каждого сотрудника отдельный лист. Например, так выглядит лист первого сотрудника: Группа Время 1 45 2 34 3 2 4 34 5 12 6 54
У разных сотрудников названия групп могут повторяться, но могут быть и уникальные. Последний лист - результат. Строки - сотрудники, столбцы - группы, и по ним расписано время. И вот мы добрались до проблемы. Если группы совпадают, то после сортировки по возрастанию времени трёх сотрудников, которые работали в группе "4" получается так:
Как можно сгруппировать строки так, чтобы значения оказались в одной строке? 4 34 54 56
Способ "вырезать-вставить-удалить строку" не пойдёт, т.к. сотрудников будет пару десятков, а групп - в несколько раз больше. Например, было бы достаточно выделить необходимые строки и выбрать "сгруппировать". Есть ли подобная функция или схожий способ решения проблемы?
Приветствую!
Столкнулся с проблемой при создании таблицы, постараюсь объяснить подробно. Представим, что у нас есть несколько сотрудников, которые работают по разным группам определённое кол-во времени, на каждого сотрудника отдельный лист. Например, так выглядит лист первого сотрудника: Группа Время 1 45 2 34 3 2 4 34 5 12 6 54
У разных сотрудников названия групп могут повторяться, но могут быть и уникальные. Последний лист - результат. Строки - сотрудники, столбцы - группы, и по ним расписано время. И вот мы добрались до проблемы. Если группы совпадают, то после сортировки по возрастанию времени трёх сотрудников, которые работали в группе "4" получается так:
Как можно сгруппировать строки так, чтобы значения оказались в одной строке? 4 34 54 56
Способ "вырезать-вставить-удалить строку" не пойдёт, т.к. сотрудников будет пару десятков, а групп - в несколько раз больше. Например, было бы достаточно выделить необходимые строки и выбрать "сгруппировать". Есть ли подобная функция или схожий способ решения проблемы?Svyaga
Для такого объема лучше макрос. Если формулами: с помощью ДВССЫЛ (определение ссылки на лист). Так ли нужно растягивать Результат повторением групп? Одна группа - одна строка.
Обратите на название листа третьего работника - пробел там. Если имена листов с пробелом, то: ДВССЫЛ("'"&D2&"'!A2:A10")
Для такого объема лучше макрос. Если формулами: с помощью ДВССЫЛ (определение ссылки на лист). Так ли нужно растягивать Результат повторением групп? Одна группа - одна строка.
Обратите на название листа третьего работника - пробел там. Если имена листов с пробелом, то: ДВССЫЛ("'"&D2&"'!A2:A10")vikttur
Есть ли подобная функция или схожий способ решения проблемы?
Достаточно не делать детских ошибок при работе с MS Excel (ошибок типа размещения однотипных данных на разных листах). Если данные расположены правильно, то становится достаточным применения простой сводной таблицы (см. вложение)
Есть ли подобная функция или схожий способ решения проблемы?
Достаточно не делать детских ошибок при работе с MS Excel (ошибок типа размещения однотипных данных на разных листах). Если данные расположены правильно, то становится достаточным применения простой сводной таблицы (см. вложение)Serge_007
Эти листы как бы необходимы на печать бухгалтеру как отдельные листы для каждого сотрудника. Всё сделано уже по формам и по стандартам, а результат я делаю для себя. И каким образом вы объединили, например, 4 группу в одну строку в сводной таблице?
Эти листы как бы необходимы на печать бухгалтеру как отдельные листы для каждого сотрудника. Всё сделано уже по формам и по стандартам, а результат я делаю для себя. И каким образом вы объединили, например, 4 группу в одну строку в сводной таблице?
Эти листы как бы необходимы на печать бухгалтеру как отдельные листы для каждого сотрудника
Что мешает бухгалтеру распечатывать на каждого сотрудника листы из общей таблицы?! Или нажатие одной кнопки фильтрации не кошерно, а вот переход по листам таки да?
Эти листы как бы необходимы на печать бухгалтеру как отдельные листы для каждого сотрудника
Что мешает бухгалтеру распечатывать на каждого сотрудника листы из общей таблицы?! Или нажатие одной кнопки фильтрации не кошерно, а вот переход по листам таки да?
Давайте Ваши "формы и стандарты" - сделаем как надо
Вы и то, что я уже скинул, не сделали... Нет, спасибо, да и не могу скинуть всё равно
P.S. Представляю себе такую таблицу из 20 сотрудников и как минимум 40 групп (это при том, что всего при 3 рабочих и небольшом количестве групп вышло уже 20 строк), тем более, что время - далеко не единственный в ней показатель. Безумно удобно.
Давайте Ваши "формы и стандарты" - сделаем как надо
Вы и то, что я уже скинул, не сделали... Нет, спасибо, да и не могу скинуть всё равно
P.S. Представляю себе такую таблицу из 20 сотрудников и как минимум 40 групп (это при том, что всего при 3 рабочих и небольшом количестве групп вышло уже 20 строк), тем более, что время - далеко не единственный в ней показатель. Безумно удобно.
каким образом вы объединили, например, 4 группу в одну строку в сводной таблице?
свидетельствует о том что задача решена именно так как Вам надо
[p.s.] Нравится трусы через голову одевать - флаг Вам в руки и удачи в бессмысленном труде. Но если не нужны нормальные пути решения, то зачем вообще нужно было на форум приходить и тему создавать?![/p.s.]
каким образом вы объединили, например, 4 группу в одну строку в сводной таблице?
свидетельствует о том что задача решена именно так как Вам надо
[p.s.] Нравится трусы через голову одевать - флаг Вам в руки и удачи в бессмысленном труде. Но если не нужны нормальные пути решения, то зачем вообще нужно было на форум приходить и тему создавать?![/p.s.]Serge_007
Нравится трусы через голову одевать - флаг Вам в руки и удачи в бессмысленном труде.
[offtop]Как по мне, создавать таблицу из трёхзначного (а то и четырёхзначного время от времени) количества строк - это настоящий мазохизм. Тем более переделывать всё готовое ради одной маленькой таблицы чисто для себя. А в выражениях можно быть и посдержаннее.[/offtop]
Зачем закрывать тему? Может, кто-нибудь что-то ещё полезное предложит помимо vikttur
Нравится трусы через голову одевать - флаг Вам в руки и удачи в бессмысленном труде.
[offtop]Как по мне, создавать таблицу из трёхзначного (а то и четырёхзначного время от времени) количества строк - это настоящий мазохизм. Тем более переделывать всё готовое ради одной маленькой таблицы чисто для себя. А в выражениях можно быть и посдержаннее.[/offtop]
Зачем закрывать тему? Может, кто-нибудь что-то ещё полезное предложит помимо vikttur Svyaga
Сообщение отредактировал Svyaga - Воскресенье, 21.12.2014, 03:34
Sub мяв() Dim odic As Object, arr(), i&, j& Set odic = CreateObject("Scripting.Dictionary") For i = 1 To 3 With Sheets(i) For j = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row If odic.exists(.Cells(j, 1).Value) Then arr = odic.Item(.Cells(j, 1).Value) arr(i) = .Cells(j, 2).Value odic.Item(.Cells(j, 1).Value) = arr Else ReDim arr(1 To 3) arr(i) = .Cells(j, 2).Value odic.Add .Cells(j, 1).Value, arr End If Next End With Next With Sheets(4) .Range("H1").Resize(odic.Count) = Application.Transpose(odic.keys) .Range("I1").Resize(odic.Count, 3) = Application.Transpose(Application.Transpose(odic.items)) End With End Sub
[/vba]
[vba]
Код
Sub мяв() Dim odic As Object, arr(), i&, j& Set odic = CreateObject("Scripting.Dictionary") For i = 1 To 3 With Sheets(i) For j = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row If odic.exists(.Cells(j, 1).Value) Then arr = odic.Item(.Cells(j, 1).Value) arr(i) = .Cells(j, 2).Value odic.Item(.Cells(j, 1).Value) = arr Else ReDim arr(1 To 3) arr(i) = .Cells(j, 2).Value odic.Add .Cells(j, 1).Value, arr End If Next End With Next With Sheets(4) .Range("H1").Resize(odic.Count) = Application.Transpose(odic.keys) .Range("I1").Resize(odic.Count, 3) = Application.Transpose(Application.Transpose(odic.items)) End With End Sub
Что мешает отвечать по теме, а не переделывать "задание" под себя?
В таком случае и я переделал... Одноименные группы позволил себе соединить в одну! И посмел же! Вам предлагают пути решения Вашей задачи. С точки зрения помогающих - пути лучше, чем Вы сами выбрали. Не нравится - не применяйте.
Цитата
Представляю себе... Безумно удобно.
Потому и возмущаетесь, что не то представляете.
Цитата
Что мешает отвечать по теме, а не переделывать "задание" под себя?
В таком случае и я переделал... Одноименные группы позволил себе соединить в одну! И посмел же! Вам предлагают пути решения Вашей задачи. С точки зрения помогающих - пути лучше, чем Вы сами выбрали. Не нравится - не применяйте.
Цитата
Представляю себе... Безумно удобно.
Потому и возмущаетесь, что не то представляете.vikttur
Вам предлагают пути решения Вашей задачи. С точки зрения помогающих - пути лучше, чем Вы сами выбрали. Не нравится - не применяйте.
[offtop]Я это понимаю, я как раз это и пытался донести несколько раз (что меня не устраивает вышеупомянутый подход), но меня тут заставляют делать, как сказали, а стоит начать спорить или "сопротивляться", сразу язвительные выражения Не люблю такое.[/offtop]
Вам предлагают пути решения Вашей задачи. С точки зрения помогающих - пути лучше, чем Вы сами выбрали. Не нравится - не применяйте.
[offtop]Я это понимаю, я как раз это и пытался донести несколько раз (что меня не устраивает вышеупомянутый подход), но меня тут заставляют делать, как сказали, а стоит начать спорить или "сопротивляться", сразу язвительные выражения Не люблю такое.[/offtop]
Некрасиво с самого же первого сообщения смотреть на окружающих свысока
Ну так не смотрите! Вам говорят как наиболее оптимально решить Вашу задачу - а у Вас принципы, не хочу мол оптимальное решение, мне надо посложнее, да позаковыристее...
Как по мне, создавать таблицу из трёхзначного (а то и четырёхзначного время от времени) количества строк - это настоящий мазохизм
Сводные таблицы работают с исходными данными размером до 100 млн строк. Причем делают это за доли секунд. Никакая формула или макрос этого не могут. Мазохизм - это игнорировать оптимальное решение и применять любое другое
тут заставляют делать, как сказали, а стоит начать спорить или "сопротивляться"
Кошка на приеме у ветеринара тоже не хочет что бы ей укол делали, сопротивляется, царапается и кусает. Но ветеринар ей плохо-то не делает, он её вылечивает в итоге...
Я пытался несколько раз сгладить ситуацию - не получилось, Вы на контакт не пошли. Значит выбора нет, тема закрыта
Некрасиво с самого же первого сообщения смотреть на окружающих свысока
Ну так не смотрите! Вам говорят как наиболее оптимально решить Вашу задачу - а у Вас принципы, не хочу мол оптимальное решение, мне надо посложнее, да позаковыристее...
Как по мне, создавать таблицу из трёхзначного (а то и четырёхзначного время от времени) количества строк - это настоящий мазохизм
Сводные таблицы работают с исходными данными размером до 100 млн строк. Причем делают это за доли секунд. Никакая формула или макрос этого не могут. Мазохизм - это игнорировать оптимальное решение и применять любое другое
тут заставляют делать, как сказали, а стоит начать спорить или "сопротивляться"
Кошка на приеме у ветеринара тоже не хочет что бы ей укол делали, сопротивляется, царапается и кусает. Но ветеринар ей плохо-то не делает, он её вылечивает в итоге...
Я пытался несколько раз сгладить ситуацию - не получилось, Вы на контакт не пошли. Значит выбора нет, тема закрытаSerge_007