Индекс соответствия находит наиболее близкое значение с несколькими критериями поиска - PullRequest
0 голосов
/ 28 апреля 2018

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

Как видите, screen shot, я пытаюсь получить абсолютное ближайшее время для конкретного человека.

Я использую формулу = индекс (C2: C21, совпадение (F4, B2: B21, -1), совпадение (E4, A2: A21,0)), и мне пришлось скопировать столбец B в столбце C, чтобы сделать моя первая матчевая работа. Результат показан в G4. К сожалению, я изо всех сил пытаюсь получить правильный результат.

По сути, я хотел бы использовать формулу, опубликованную в предыдущем сообщении (см. Ссылку вверху) = INDEX (E2: E21, MATCH (TRUE, INDEX (ABS (D1: D21-I4)) = MIN (INDEX ( АБС (D2: D21-I4) ,,)) ,,), 0)) с критериями поиска (имя человека).

Любая помощь будет высоко ценится

Спасибо

Спасибо @avram Я до сих пор сталкиваюсь с некоторыми случаями, когда формула не работает. Увидеть ниже. в G6 и G7 я должен получить 10:25. (Вы можете игнорировать столбец A) screen shot 2

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

В этом ответе используется Array Formulas, который необходимо ввести с помощью CTRL + SHIFT + ENTER. Это довольно сложно, поэтому я сделаю все возможное, чтобы объяснить, и пересмотрю, если необходимо. Вот скриншот: Screenshot

Вот формула в необработанном виде; имена вводятся в столбце A, Times в столбце B. =INDEX(B1:B7,MATCH(MIN(IF(A1:A7=D2,ABS(E2-B1:B7),"")),IF(A1:A7=D2,ABS(E2-B1:B7),"")))

Как вы можете подозревать, он использует INDEX/MATCH для выполнения работы, но ключ использует оператор IF для генерации как критериев поиска, так и массива, в котором выполняет поиск функция MATCH. Давайте разберемся с этим.

Sec 1, Массив поиска совпадений IF(A1:A7=D2,ABS(E2-B1:B7),"") Это создает массив поиска для функции соответствия. Если имя в D2 (наши критерии) совпадает с именем в массиве поиска, оно возвращает абсолютное значение разницы между временем критериев и временем в массиве, который мы ищем. В противном случае он возвращает пустое значение. Не используйте 0 для этого, так как это приведет к искажению результата матча.

Sec 2, Критерии поиска совпадений MIN(IF(A1:A7=D2,ABS(E2-B1:B7),"")) Это говорит нам о наименьшем значении в приведенном выше массиве. Мы используем это значение в качестве критерия поиска в функции MATCH.

Раздел 3, соединение 1 и 2 вместе MATCH(MIN(IF(A1:A7=D2,ABS(E2-B1:B7),"")),IF(A1:A7=D2,ABS(E2-B1:B7),"")) При этом выполняется поиск наименьшей разности абс, определенной в разделе 2 в пределах массива, созданного в разделе 1, и возвращается номер строки.

Сек. 4, Индексирование времени =INDEX(B1:B7,MATCH(MIN(IF(A1:A7=D2,ABS(E2-B1:B7),"")),IF(A1:A7=D2,ABS(E2-B1:B7),""))) Это возвращает значение времени из столбца B в любой строке, идентифицированной функцией соответствия выше.

Надеюсь, все это имеет смысл. Не забудьте ввести его как формулу массива.

0 голосов
/ 29 апреля 2018

Попробуйте эту формулу в G4,

=index(C$2:C$21, match(min(index(abs(index(C$2:C$21+(B$2:B$21<>E4)*1E+99, , )-F4), , )), if(B$2:B$21=E4, abs(C$2:C$21-F4), 1E+99), 0))

Это будет работать либо в в качестве стандартной формулы (не для массива / не CSE), либо в в качестве формулы для массива (CSE).

enter image description here

Если кто-то еще захочет решить эту проблему с помощью более элегантной формулы, вы можете скопировать пример данных из этого общедоступного google-листа.

Индекс совпадения находит ближайшее значение с несколькими критериями поиска

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

0 голосов
/ 28 апреля 2018

Очень простой подход с использованием столбца "помощник" с такими данными, как:

enter image description here

Мы хотим максимально близкое абсолютное совпадение для Ларри к 10:15. Мы вводим Ларри в E1 и 10: 15 AM в F1

Затем в D2 вводим:

=IF(A2=$E$1,ABS(B2-$F$1),"")

и скопировать вниз. (это абсолютная разница для Ларри) Наконец, в E2 :

=INDEX(B:B,MATCH(MIN(D:D),D:D,0))

enter image description here

Если в больших таблицах больше столбцов, при необходимости очень легко добавить дополнительные критерии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...