Страницы: 1
RSS
Перенести данные с горизонтальной таблицы в вертикальную по дням
 
Добрый день.

Подскажите плиз, как можно перенести данные с горизонтальной таблицы в вертикальную по дням.
Есть две таблицы:
  1. Классическая таблица с графиком работы, где напротив каждой фамилии есть цифра 1, т.е. рабочий день. - горизонтальная
  2. Упрощенная таблица с графиком, где в первом столбце указан месяц, а во втором должны быть перенесены фамилии. - вертикальная
Пример в сообщении ниже

Буду очень благодарен за помощь!!
 
Log4, почему 2го ноября в таб. "как требуется" только трое, тогда как в исх. таб. у всех 5х стоят единицы?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
не тот файл загрузился =\
 
Почему в "Как требуется" Вы везде отвели под фамилии по три яч. внутри даты, тогда как 8го и 27го работали четверо?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Сделал первые дни в качестве примера, так сказать урезанная версия, т.к. данных в два раза больше.
 
примерно так, без красоты

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
решение с помощью PQ
 
Доброе время суток
Цитата
Anton555 написал:
решение с помощью PQ
Коллега, может проще так?
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"ФИО"}, "Атрибут", "Значение"),
    #"Filtered Rows" = Table.SelectRows(#"Unpivoted Other Columns", each ([Значение] = 1)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Значение"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Атрибут", Int64.Type}, {"ФИО", type text}})
in
    #"Changed Type"
 
Цитата
Коллега, может проще так?

конечно проще, но тут загвоздка в Table.UnpivotOtherColumns, если не знаешь эту функцию, то тяжко
вы как всегда на высоте, честь и хвала вам.
 
Хмм... думал, что формулами excel можно будет обойтись...

Интересно сколько времени уйдет на внедрение)

Т.к. эти таблицы находятся в разных файлах, а график работы людей у кого стоит буква "н" планировал объединять в одну строку ... =\
 
Log4,не жмите на Enter по несколько раз. Одного достаточно.
 
Спасибо, но через PQ не удобно для последующего использования, т.к. этот элемент часть большой таблицы.

формулами никак не сделать задачку эту?
 
Цитата
перенести данные с горизонтальной таблицы в вертикальную по дням
вот так еще можно попробовать
 
Или так (все-таки макрос, но работает)  :)
 
Интересный вариант с макросом)
Может легче разделить по дням тогда? И с помощью формул индекс и поиск, или ВПР и искать фамилии, но возникает вопрос, как вытащить все фамилии по порядку =\
 
Цитата
Log4 написал:
Может легче разделить по дням тогда?
Для чего легче? Куда и как и чего разделить? Чтобы ячейки с одним днем не объединять? Но Вы же сами так показали в примере, вот я и объединил :)  Уберите в коде этот блок:
Код
If Cells(lr - 1, 34).Value = Cells(lr, 34).Value Then
     Range(Cells(lr - 1, 34), Cells(lr, 34)).Merge
     With Range(Cells(lr - 1, 34), Cells(lr, 34))
         .HorizontalAlignment = xlCenter
         .VerticalAlignment = xlCenter
     End With
 End If
вот и будет в каждой строчке один день, привязывайте к формулам.

Цитата
Log4 написал:
возникает вопрос, как вытащить все фамилии по порядку
Кажется, изначально тема была совсем о другом... :)
 
Окай))
Пойду изучать VBA)
Спасибо!
 
не смотрел что с формулами выше
По вопросам из тем форума, личку не читаю.
 
БМВ , спасибо! С этим я хотя бы могу поработать!)
Пойду разбирать по косточкам)
 
Вариант с функцией АГРЕГАТ. (формула не требует массивного ввода)
Код
=IFERROR(INDEX(B$6:B$10;AGGREGATE(15;6;ROW($1:$10)/ISNUMBER(INDEX($C$6:$AF$10;;CEILING(ROWS($12:12)/3;1)));MOD(ROWS($12:12)-1;3)+1));"")
Изменено: jakim - 27.10.2018 15:43:16
 
Цитата
jakim написал:
Вариант с функцией АГРЕГАТ. (формула не требует массивного ввода)Код ? 1=IFERROR(INDEX(B$6:B$10;AGGREGATE(15;6;ROW($1:$10)/ISNUMBER(INDEX($C$6:$AF$10;;CEILING(ROWS($12:12)/3;1)));MOD(ROWS($12:12)-1;3)+1));"")
Хмм.. не встречался с таким вариантов.
Спасиб!
То же поковыряюсь с этой формулой, что бы понять как работает.  
 
Найдите в сети информацию о цитировании (для чего, когда и как применять), после этого ознакомьтесь с пунктом 4.2. правил форума, а потом исправьте свое сообщение.
Страницы: 1
Наверх