Excel - Получение 2-й или n-й подходящей строки из ваших соответствующих данных - PullRequest
0 голосов
/ 08 мая 2019

С моими предыдущими сообщениями
1. PHPSpreadsheet генерирует ошибку «Неверное количество аргументов для функции INDEX (): дано 5, ожидается от 1 до 4»
2. Excel - получение 5 лучших данных столбца и их соответствующего заголовка, но при этом создаются дубликаты

Я обнаружил, что библиотека PHPSpreadsheet для PHP еще не позволяет использовать AGGREGATE() и сложные формулы/ функции, но я остро нуждаюсь в их функциональности

Возвращаясь, у меня есть 2 столбца в Excel (созданных моими веб-приложениями из CodeIgniter и Laravel)

2 Columns

Проблема в том, что столбец Количество статей (справа) содержит 2 значения 54 , которые должны принадлежать 2 различным публикациям (слева), но с использованием формулы =INDEX(E$4:E$38,MATCH(M4,J$4:J$38,0)) он просто выбирает 1-е совпадение Publication .

Вывод должен выглядеть следующим образом:
output

ПроисхождениеИнал Таблица:
raw

Мой вопрос: какая будет правильная функция или код в Excel, чтобы я мог получить SECOND Публикация моегосопоставленные данные?Я нацеливаюсь на те Публикации , которые имеют Количество статей из 54 , но я хочу нацелиться на ВТОРОЙ ОДИН , которыйбуква D БЕЗ использования функции Aggregate () в Excel

Вот мои используемые коды
1) =LARGE(J4:J38,1) - J4: J38 - мой диапазоннеобработанных данных, я использую это, чтобы получить 5 старших чисел в порядке убывания
2) =INDEX(E4:E38,MATCH(M4,J4:J38,0)) - я использую это, чтобы получить Имена публикаций , которые соответствуют Количество статей

Ответы [ 2 ]

1 голос
/ 08 мая 2019

После общения в чате мы получили правильную формулу:

=INDEX(E$2:E$38,IF(M4=M3,MATCH(L3,E$2:E$38,0),0)+MATCH(M4,OFFSET(J$2,IF(M4=M3,MATCH(L3,E$2:E$38,0),0),0,COUNT(J$2:J$38)-IF(M4=M3,MATCH(L3,E$2:E$38,0),0),1),0))

Как это работает: IF(M4=M3,MATCH(L3,E$2:E$38,0),0) возвращает позицию заголовка публикации предыдущего ряда в массиве заголовков (E), в случае, еслитекущее количество публикаций совпадает с предыдущим.Давайте назовем это число X. Вместо того, чтобы использовать J2: J38 для результатов, мы используем J (2 + X): J38.Этот трюк делается с помощью смещения, чтобы отрезать предыдущий раздел, уже использовавшийся предыдущим рядом.Таким образом, при повторном подсчете публикаций уже упомянутые заголовки игнорируются.

0 голосов
/ 08 мая 2019

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

'in M4
=LARGE(J$4:J$38, ROW(1:1))
'in L4
=INDEX(I:I, AGGREGATE(15, 7, ROW($4:$38)/(J$4:J$38=M4), COUNTIF(M$4:M4, M4)))

введите описание изображения здесь

...