Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Задачка, объединить данные с разных листов

Ответить
Настройки темы
Разное - Задачка, объединить данные с разных листов

Ветеран


Сообщения: 890
Благодарности: 15

Профиль | Отправить PM | Цитировать


Друзья, задали такую задачку:
Есть несколько листов с данными, в списке ФИО и некие цифры по месяцам.
Задача: Объединить данные, и выявить одинаковые ФИО и чтобы они расположились по столбацам.
Условно:
ФИО Январь Февраль Март
Иванов И.И. 242425 3434

т.е. в данном случае может быть в феврале не было цифр, но за март были....

У меня пока только одна мысль: Ручками скопировать на один лист..... а вот как дальше упорядочить, вопрос...
Помогите, может какие мысли накините.. может скрипт какой-нибудь накидать...
Были бы имена все одинаковые, было бы проще, но бывает что эти имена не по порядку идут и бывает некоторых имён нет.... а бывает что в трёх таблицах одинаковые имена, но за Январь данные есть, а допустим за февраль нет данных, а за март опять есть...

Файл пример: https://cloud.mail.ru/public/PTmH/XofBBqjs8

чуть продолжу
Условно говоря: Собрал данные, пусть даже вручную, на один лист...
В итоге получим:
1 столбец ФИО
2, 3, 4, 5 столбцы с данными
Надо как-то чтобы строки с одинаковыми ФИО свернулись, а данные по столбцам упали в столбцы эквивалентные свёрнутым ФИО

Отправлено: 18:35, 13-04-2023

 

Модератор


Moderator


Сообщения: 16829
Благодарности: 3245

Профиль | Сайт | Отправить PM | Цитировать


DimonNT, Power Query
https://disk.yandex.ru/i/_aIgUD4iOng-KQ

P.S. Вы в теме не указали версию Excel

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:53, 13-04-2023 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 890
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата okshef:
DimonNT, Power Query
https://disk.yandex.ru/i/_aIgUD4iOng-KQ

P.S. Вы в теме не указали версию Excel
Да это не принципиально, могу и любую свежую накатить, спасибо за подсказку, утром посмотрю что это за зверь

Отправлено: 20:24, 13-04-2023 | #3


Модератор


Moderator


Сообщения: 16829
Благодарности: 3245

Профиль | Сайт | Отправить PM | Цитировать


Цитата DimonNT:
Да это не принципиально »
Версии ранее 2010 не будут работать

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:34, 13-04-2023 | #4


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xls данные.xlsm.xls
(27.2 Kb, 1 просмотров)

DimonNT, Для начала, реорганизуем таблицу:
1) листы с данными переименуем в строгом соответствии с названием месяцев. листы с месяцами можно добавлять по мере необходимости
2) создадим лист с названием, например, Свод, нарисуем на нём заголовок и отформатируем для данных
Далее - выполним макрос
Код: Выделить весь код
Sub DimonNT()
    Const rFio = "A2", Svod = "Свод"
    Amon = Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь")
    Dim Asum0(0, 11)
    
    For i = 0 To 11
        Asum0(0, i) = 0
    Next
        
    Application.ScreenUpdating = False
    With CreateObject("Scripting.Dictionary")
        For m = 0 To 11
            On Error Resume Next
                Set R = Sheets(Amon(m)).Range(rFio)
                If Err.Number = 0 Then
                    j = 0
                    Do
                        Rv = R.Offset(j, 0).Value
                        If Not .Exists(Rv) Then
                            .Add Rv, Asum0
                        End If
                        Asum = .Item(Rv)
                        Asum(0, m) = Asum(0, m) + R.Offset(j, 1).Value
                        .Item(Rv) = Asum
                        j = j + 1
                    Loop Until Rv = Empty
                End If
            On Error GoTo 0
        Next
        j = 0
        Sheets(Svod).Range(rFio).Resize(10000, 13).ClearContents
        For Each k In .Keys
            Sheets(Svod).Range(rFio).Offset(j, 0) = k
            Sheets(Svod).Range(rFio).Offset(j, 1).Resize(1, 12).Value = .Item(k)
            j = j + 1
        Next
        Application.ScreenUpdating = True
    End With
End Sub
На листе Свод получим объединенные данные. Возможные проблемы - если Фамилия Имя Отчество для одного и того же человека введена на разных листах по разному.
Вашу таблицу с макросом прилагаю. Удалите только из названия файла расширение .xls

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:15, 13-04-2023 | #5


Ветеран


Сообщения: 890
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата okshef:
Power Query »
А можно текст запроса?... если не трудно, пожалуйста

Отправлено: 06:47, 14-04-2023 | #6


Модератор


Moderator


Сообщения: 16829
Благодарности: 3245

Профиль | Сайт | Отправить PM | Цитировать


Нажимаете на вкладке "Данные" кнопку "Запросы и подключения". Появляется панель с запросами. Двойной клик по любому - открывается Power Query. Кликайте по нужному запросу -> Вкладка "Главная" -> "Расширенный редактор".

Там 4 запроса. 3 одинаковых для исходных таблиц.

Совсем другой вопрос - что делать, если данные будут добавляться. Это отдельный разговор

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Последний раз редактировалось okshef, 14-04-2023 в 10:53.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:04, 14-04-2023 | #7



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - Задачка, объединить данные с разных листов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - объединить данные из папок в один csv kontox Скриптовые языки администрирования Windows 18 25-10-2018 15:24
2010 - [решено] Сумма по нарастающей из разных листов sov44 Microsoft Office (Word, Excel, Outlook и т.д.) 4 31-03-2015 22:29
2007 - [решено] Как собрать данные с нескольких листов без использования сводной таблицы dummy12 Microsoft Office (Word, Excel, Outlook и т.д.) 2 21-09-2012 10:13
HDD - [решено] Объединить два разных HDD в один или хотя бы перераспределить SwanHearts Накопители (SSD, HDD, USB Flash) 3 19-07-2010 14:17
Как объединить 2 видеофрагмента из разных файлов Den47 Видео и аудио: обработка и кодирование 8 23-10-2008 12:23




 
Переход