Страницы: 1
RSS
Отбор уникальных значений в динамическом массиве (новая запись добавляется вверху массива)
 
Добрый день, уважаемые друзья.

Прошу помощи в написании формулы отбора уникального списка из динамического массива.

Дано:
Динамический список на "Листе1" с внесением новых строк вверху массива (новая запись вносится в строку 3 со сдвигом всего массива вниз).

Необходимо:
На "Листе2" создать уникальный список по столбцу "В" "Листа1" с указанием наибольшего значения по столбцу "Е" "Листа1".

Большое спасибо!
 
Доброе время суток.
Вариант.
P. S. ms041270, не приходило никогда в голову, мысль, что желательно читать правила и на этом форуме и на этом?
 
Андрей, большое спасибо за решение.
Но, очевидно, в силу своей неопытности при переносе формул в моем файле не работает.
В формуле отбора уникальных данных UNIQUE это имя списка?
Буду признателен за разъяснения.

P.S.:в правилах:
п. 2.4. - данные не "секретные"
п. 3.7. - отсутствие должного у меня опыта не позволяет самостоятельно решить задачу.
п. 4.1. - указано "Не рекомендуется", а не "Запрещено".

Если я кого-то обидел - прошу прощения.
 
ms041270, Вариант сводной таблицей (лист3) и макросом (Лист2)..
Код
Sub unik()
Dim i As Double
Worksheets("Ëèñò2").Range("A:B").ClearContents
LR = Worksheets("Ëèñò1").Cells(Rows.Count, 2).End(xlUp).Row
    For i = 2 To LR
    k = Application.WorksheetFunction.CountIf(Worksheets("Ëèñò2").Range("A:A"), Worksheets("Ëèñò1").Range("B" & i))
    If k < 1 Then
    LR2 = Worksheets("Ëèñò2").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Worksheets("Ëèñò2").Cells(LR2, 1) = Worksheets("Ëèñò1").Cells(i, 2)
    Max = Application.WorksheetFunction.MaxIfs(Worksheets("Ëèñò1").Range("E:E"), Worksheets("Ëèñò1").Range("B:B"), Worksheets("Ëèñò1").Cells(i, 2))
    Worksheets("Ëèñò2").Cells(LR2, 2) = Max
    End If
    Next i
End Sub
Изменено: Mershik - 04.04.2020 17:37:06
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
ms041270 написал:
UNIQUE это имя списка?
UNIQUE function
 
Цитата
Андрей VG написал:
UNIQUE function
Спасибо!
 
Цитата
Mershik написал:
ms041270 , Вариант сводной таблицей (лист3) и макросом (Лист2)..
Mershik, большое спасибо!!!
Замечательно!!!
 
Если кому-то интересно, выкладываю решение без макросов:

1) На Листе2 в столбце А создадим копию массива столбца В Листа1: {=Лист1!B:B}
2) На Листе2 в столбце B создадим копию массива столбца E Листа1: {=Лист1!E:E}
4) Создадим Список "Исходный_список1" припомощи формулы: =СМЕЩ(Лист2!$A$3;;;СЧЁТЗ(Лист1!$A$3:$A$1008))
5) На Листе3 в ячейке А5 внесем формулу массива: {=ИНДЕКС(Исходный_список1;ПОИСКПОЗ(0;СЧЁТЕСЛИ(A$4:A4;Исходный_список1);0))}
6) Протяним формулу до максимально нижней ячейки по столбцу А
7) На Листе3 в ячейке В5 внесем формулу массива: {=МАКС(ЕСЛИ(Лист2!$A$3:$A$1000=A5;Лист2!$B$3:$B$1000))}
8) Протяним формулу до максимально нижней ячейки по столбцу B

Файл примера в первом сообщении.
Страницы: 1
Наверх