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

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - [решено] Объединание строк в Microsoft Office

Ответить
Настройки темы
2013 - [решено] Объединание строк в Microsoft Office

Забанен


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

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


Вложения
Тип файла: xlsx ljudmilla.xlsx
(4.8 Kb, 3 просмотров)
Добрый день!

Нужна помощь с Microsoft Office. Есть некая таблица, где есть колонки: имя, фамилия, мероприятие 1, мероприятие 2, мероприятие 3 и тд. И дальше идёт заполнение по строкам, где имя и фамилия и значение "Да", если человек был на мероприятии. Проблема в том, что нужна функция, которая копировала бы таблицу объединяя данные по дубликатам(критерием являются имя и фамилия). Помогите пожалуйста! Заранее спасибо. Файл с примером задачи прилагается.

Отправлено: 10:30, 23-02-2015

 

Модератор


Moderator


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

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


phoenix91140, уточните, как объединяются мероприятия, что в результате? Т.к. для удаления повторяющихся имен и фамилий есть встроенная функция "Удалить дубликаты". Но в этом случае о данных в колонках "Мероприятие..." можно забыть

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


Отправлено: 11:14, 23-02-2015 | #2



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

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


Забанен


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

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


Вложения
Тип файла: xlsx ljudmilla.xlsx
(4.9 Kb, 5 просмотров)

Нужно получить в итоге Имя и Фамилию, и чтобы значения мероприятий перешли все в одну строку.

Прилагаю новый файл. В таблице слева, то как это есть до изменений, а справа, то что должно получиться. Как вот такое на автомате сделать?

Тоесть чтобы строки с повторябшимся именем и фамилией объединялись в одну и значения мероприятий со всех строк сложились в одну строку. Данные мероприятий указанные в разных строках надо сохранить в одну строку и оставить лишь одну строку на уникального человека(имя + фамилия).

Вот новый файл

Отправлено: 12:58, 23-02-2015 | #3


Ветеран


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

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


Процедура на VBA:
Скрытый текст
Код: Выделить весь код
Sub Sample()
    Dim objConnection As Object
    Dim objRecordSet As Object
    
    Dim objWorksheet As Worksheet
    Dim objRange As Range
    
    Dim i As Integer
    
    
    Set objConnection = CreateObject("ADODB.Connection")
    
    With objConnection
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = _
            "Data Source=" & ThisWorkbook.FullName & ";" & _
            "Extended Properties=""Excel 8.0;HDR=Yes;"""
        .Open
    End With
    
    Set objRecordSet = objConnection.Execute( _
            "SELECT FIRST(Имя) AS Имя, FIRST(Фамилия) AS Фамилия, " & _
            "COUNT([Мероприятие 1]) AS [Мероприятие 1], " & _
            "COUNT([Мероприятие2])  AS [Мероприятие 2], " & _
            "COUNT([Мероприятие 3]) AS [Мероприятие 3], " & _
            "COUNT([Мероприятие 4]) AS [Мероприятие 4] " & _
            "FROM [Sheet1$] " & _
            "GROUP BY Имя, Фамилия ORDER BY Фамилия, Имя" _
        )
    
    Set objWorksheet = ThisWorkbook.Worksheets.Add()
    Set objRange = objWorksheet.Range("A1")
    
    With objRecordSet
        .MoveFirst
        
        For i = 0 To .Fields.Count - 1
            objRange.Offset(0, i).Value = .Fields.Item(i).Name
        Next
        
        Do Until .EOF
            Set objRange = objRange.Offset(1, 0)
            
            For i = 0 To 1
                objRange.Offset(0, i).Value = .Fields.Item(i).Value
            Next
            
            For i = 2 To .Fields.Count - 1
                If .Fields.Item(i).Value Then
                    objRange.Offset(0, i).Value = "Да"
                End If
            Next
            
            .MoveNext
        Loop
    End With
    
    objWorksheet.Columns("A:F").AutoFit
    
    Set objRange = Nothing
    Set objWorksheet = Nothing
    
    objRecordSet.Close
    objConnection.Close
    
    Set objRecordSet = Nothing
    Set objConnection = Nothing
End Sub

Рабочая книга перед исполнением процедуры должна быть сохранена. Проверялось под Office 2003:
Скрытый текст

Заработает ли у Вас — не скажу.

Пример на коленке делали? «Эдгар/Эдраг», «Мероприятие 1/Мероприятие2».
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:29, 23-02-2015 | #4



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - [решено] Объединание строк в Microsoft Office

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Microsoft собирается переименовать Office Web Apps в Office Online OSZone News Новости и события Microsoft 0 28-01-2014 11:30
Разное - Как конвертировать базу данных Microsoft Office Acess в Open office Base? tier_skg Хочу все знать 0 08-01-2013 20:36
Microsoft объявляет о доступности бесплатной альтернативы MS Office - Office Web Apps OSZone News Новости и события Microsoft 17 27-06-2010 10:47
Microsoft анонсирует выпуск бесплатной версии MS Office - Office Starter 2010 OSZone News Новости и события Microsoft 0 10-10-2009 15:30




 
Переход