Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выборка из списка повторяющихся данных с разными значениями - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выборка из списка повторяющихся данных с разными значениями (Формулы/Formulas)
Выборка из списка повторяющихся данных с разными значениями
Barbos_TN Дата: Понедельник, 16.07.2018, 18:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

OFFICE 365
Добрый день, друзья!

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

Голову сломал, но не могу ничего придумать, как ручной ввод.
Может быть есть здесь специалисты, которые помогут написать простой алгоритм?

Пож-а-а-а-луйста...
К сообщению приложен файл: 8964234.xlsx (10.2 Kb)


Сообщение отредактировал Barbos_TN - Вторник, 17.07.2018, 17:32
 
Ответить
СообщениеДобрый день, друзья!

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

Голову сломал, но не могу ничего придумать, как ручной ввод.
Может быть есть здесь специалисты, которые помогут написать простой алгоритм?

Пож-а-а-а-луйста...

Автор - Barbos_TN
Дата добавления - 16.07.2018 в 18:43
Светлый Дата: Понедельник, 16.07.2018, 19:27 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Добрый день!
Формулы массивные:
Код
=ЕСЛИОШИБКА(ИНДЕКС(A$2:A$11;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(A$2:A$11;A$2:A$11;)=СТРОКА($1:$10);СТРОКА($1:$10));СТРОКА(I1)));"")

Код
=ЕСЛИ(F2="";"";ПОДСТАВИТЬ(НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;1)&", "&НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;2)&", "&НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;3)&", "&НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;4);", 0";))
К сообщению приложен файл: 8964234-1.xlsx (11.7 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеДобрый день!
Формулы массивные:
Код
=ЕСЛИОШИБКА(ИНДЕКС(A$2:A$11;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(A$2:A$11;A$2:A$11;)=СТРОКА($1:$10);СТРОКА($1:$10));СТРОКА(I1)));"")

Код
=ЕСЛИ(F2="";"";ПОДСТАВИТЬ(НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;1)&", "&НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;2)&", "&НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;3)&", "&НАИБОЛЬШИЙ((A$2:A$11=F2)*B$2:B$11;4);", 0";))

Автор - Светлый
Дата добавления - 16.07.2018 в 19:27
_Boroda_ Дата: Понедельник, 16.07.2018, 19:32 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Для произвольного количества повторов без макроса сложно
А с макросом легко :D
[vba]
Код
Sub tt()
    r0_ = 2
    r1_ = Cells(Rows.Count, 1).End(3).Row
    If r1_ < r0_ Then Exit Sub
    nr_ = r1_ - r0_ + 1
    c1_ = 9
    ar = Cells(r0_, 1).Resize(nr_, 2)
    Set slov = CreateObject("Scripting.Dictionary")
    With slov
        For i = 1 To nr_
            If .Exists(ar(i, 1)) Then
                .Item(ar(i, 1)) = .Item(ar(i, 1)) & ", " & ar(i, 2)
            Else
                .Item(ar(i, 1)) = ar(i, 2)
            End If
        Next i
        r11_ = Cells(Rows.Count, c1_).End(3).Row
        Cells(r0_, c1_).Resize(r11_ - r0_ + 1, 2).ClearContents
        Cells(r0_, c1_).Resize(.Count, 1) = Application.Transpose(.Keys)
        Cells(r0_, c1_ + 1).Resize(.Count, 1) = Application.Transpose(.Items)
    End With
End Sub
[/vba]

Прохлопал я сначала
[moder]Тимур, измените название темы. "Выборка данных" слишком общее название - это нарушение Правил форума[/moder]
К сообщению приложен файл: 8964234_1.xlsm (18.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995


Сообщение отредактировал _Boroda_ - Понедельник, 16.07.2018, 19:40
 
Ответить
СообщениеДля произвольного количества повторов без макроса сложно
А с макросом легко :D
[vba]
Код
Sub tt()
    r0_ = 2
    r1_ = Cells(Rows.Count, 1).End(3).Row
    If r1_ < r0_ Then Exit Sub
    nr_ = r1_ - r0_ + 1
    c1_ = 9
    ar = Cells(r0_, 1).Resize(nr_, 2)
    Set slov = CreateObject("Scripting.Dictionary")
    With slov
        For i = 1 To nr_
            If .Exists(ar(i, 1)) Then
                .Item(ar(i, 1)) = .Item(ar(i, 1)) & ", " & ar(i, 2)
            Else
                .Item(ar(i, 1)) = ar(i, 2)
            End If
        Next i
        r11_ = Cells(Rows.Count, c1_).End(3).Row
        Cells(r0_, c1_).Resize(r11_ - r0_ + 1, 2).ClearContents
        Cells(r0_, c1_).Resize(.Count, 1) = Application.Transpose(.Keys)
        Cells(r0_, c1_ + 1).Resize(.Count, 1) = Application.Transpose(.Items)
    End With
End Sub
[/vba]

Прохлопал я сначала
[moder]Тимур, измените название темы. "Выборка данных" слишком общее название - это нарушение Правил форума[/moder]

Автор - _Boroda_
Дата добавления - 16.07.2018 в 19:32
Barbos_TN Дата: Вторник, 17.07.2018, 17:33 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

OFFICE 365
Друзья, спасибо за ответы.
Буду пробовать.
Если не получится, вернусь к вам за новым советом.
:)
 
Ответить
СообщениеДрузья, спасибо за ответы.
Буду пробовать.
Если не получится, вернусь к вам за новым советом.
:)

Автор - Barbos_TN
Дата добавления - 17.07.2018 в 17:33
Barbos_TN Дата: Среда, 15.08.2018, 16:00 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

OFFICE 365
Barbos_TN, Всем спасибо!

Все получилось.
Использовал макрос от уважаемого "_Boroda_"
 
Ответить
СообщениеBarbos_TN, Всем спасибо!

Все получилось.
Использовал макрос от уважаемого "_Boroda_"

Автор - Barbos_TN
Дата добавления - 15.08.2018 в 16:00
sv2014 Дата: Среда, 15.08.2018, 18:00 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
Barbos_TN, еще вариант ,кнопка test


[vba]
Код
Sub test()
    Dim z, i&, j&, m&, t$: z = Range("A2:B" & Range("A" & Rows.Count).End(xlUp).Row).Value
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z): t = z(i, 1)
        If .exists(t) = False Then
            m = m + 1: .Item(t) = m: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
        Else
            z(.Item(t), 2) = z(.Item(t), 2) & "," & z(i, 2)
        End If
    Next
Range("I2").Resize(.Count, UBound(z, 2)).Value = z
Range("J2:J" & Range("J" & Rows.Count).End(xlUp).Row).HorizontalAlignment = xlRight
End With
End Sub
[/vba]
К сообщению приложен файл: example_16_08_2.xls (36.5 Kb)
 
Ответить
СообщениеBarbos_TN, еще вариант ,кнопка test


[vba]
Код
Sub test()
    Dim z, i&, j&, m&, t$: z = Range("A2:B" & Range("A" & Rows.Count).End(xlUp).Row).Value
    With CreateObject("scripting.dictionary"): .CompareMode = 1
    For i = 1 To UBound(z): t = z(i, 1)
        If .exists(t) = False Then
            m = m + 1: .Item(t) = m: For j = 1 To UBound(z, 2): z(m, j) = z(i, j): Next
        Else
            z(.Item(t), 2) = z(.Item(t), 2) & "," & z(i, 2)
        End If
    Next
Range("I2").Resize(.Count, UBound(z, 2)).Value = z
Range("J2:J" & Range("J" & Rows.Count).End(xlUp).Row).HorizontalAlignment = xlRight
End With
End Sub
[/vba]

Автор - sv2014
Дата добавления - 15.08.2018 в 18:00
Barbos_TN Дата: Понедельник, 03.09.2018, 15:50 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

OFFICE 365
Всем привет в этом чатике :) !

Я снова к вам за помощью.
Нужен простой алгоритм для заполнения пустых ячеек.
Описать сложно, в файле пример того, что нужно.

Голову сломал, но не смог сам ничего придумать.
К сообщению приложен файл: 1278394.xlsx (11.1 Kb)


Сообщение отредактировал Barbos_TN - Понедельник, 03.09.2018, 15:59
 
Ответить
СообщениеВсем привет в этом чатике :) !

Я снова к вам за помощью.
Нужен простой алгоритм для заполнения пустых ячеек.
Описать сложно, в файле пример того, что нужно.

Голову сломал, но не смог сам ничего придумать.

Автор - Barbos_TN
Дата добавления - 03.09.2018 в 15:50
_Boroda_ Дата: Понедельник, 03.09.2018, 15:53 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- п.4 Правил форума: один вопрос - одна тема. Создайте новую


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- п.4 Правил форума: один вопрос - одна тема. Создайте новую

Автор - _Boroda_
Дата добавления - 03.09.2018 в 15:53
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выборка из списка повторяющихся данных с разными значениями (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!