Формула Excel: Витяг унікальних елементів зі списку -

Зміст

Загальна формула

(=INDEX(list,MATCH(0,COUNTIF(uniques,list),0)))

Резюме

Щоб витягти зі списку або стовпця лише унікальні значення, ви можете використовувати формулу масиву на основі INDEX, MATCH та COUNTIF. У наведеному прикладі формула в D5, скопійована вниз, має вигляд:

(=INDEX(list,MATCH(0,COUNTIF($D$4:D4,list),0)))

де "список" - іменований діапазон B5: B11.

Примітка: це формула масиву, і її потрібно вводити за допомогою control + shift + enter.

Пояснення

Основою цієї формули є базовий пошук за допомогою INDEX:

=INDEX(list,row)

Іншими словами, вкажіть INDEX список і номер рядка, і INDEX отримає значення, яке потрібно додати до унікального списку.

Важка робота полягає в тому, щоб з’ясувати число РЯДОК, щоб отримати ІНДЕКС, щоб ми отримали лише унікальні значення. Це робиться за допомогою MATCH і COUNTIF, і головний фокус тут:

COUNTIF($D$4:D4,list)

Тут COUNTIF підраховує, скільки разів елементи, що вже є в унікальному списку, з’являються у головному списку, використовуючи посилання, що розширюється для діапазону, $ D $ 4: D4.

Розширення посилання є абсолютним з одного боку, відносним з іншого. У цьому випадку, коли формула копіюється вниз, посилання розширюватиметься, щоб включати більше рядків в унікальний список.

Зверніть увагу, що посилання починається з D4, на один рядок над першим унікальним записом, в унікальному списку. Це навмисно - ми хочемо підрахувати елементи * вже * в унікальному списку, і ми не можемо включити поточну комірку без створення кругового посилання. Отже, ми починаємо з рядка вище.

Важливо: переконайтесь, що заголовок унікального списку не відображається в основному списку.

Для критеріїв у COUNTIF ми використовуємо сам основний список. Якщо задано кілька критеріїв, COUNTIF поверне кілька результатів у масиві. У кожному новому рядку ми маємо інший масив, такий:

(0;0;0;0;0;0;0) // row 5 (1;0;0;0;1;0;0) // row 6 (1;1;0;0;1;0;1) // row 7 (1;1;1;1;1;0;1) // row 8

Примітка: COUNTIF обробляє декілька критеріїв із співвідношенням "АБО" (тобто COUNTIF (діапазон, ("червоний", "синій", "зелений")) підраховує червоний, синій або зелений.

Тепер у нас є масиви, які нам потрібні для пошуку позицій (номерів рядків). Для цього ми використовуємо MATCH, налаштований на точну відповідність, щоб знайти нульові значення. Якщо ми помістимо масиви, створені COUNTIF вище, у MATCH, ось що ми отримаємо:

MATCH(0,(0;0;0;0;0;0;0),0) // 1 (Joe) MATCH(0,(1;0;0;0;1;0;0),0) // 2 (Bob) MATCH(0,(1;1;0;0;1;0;1),0) // 3 (Sue) MATCH(0,(1;1;1;1;1;0;1),0) // 6 (Aya)

MATCH знаходить елементи, шукаючи кількість нулів (тобто шукає елементи, які ще не відображаються в унікальному списку). Це працює, оскільки MATCH завжди повертає перший збіг, коли є дублікати.

Нарешті, позиції подаються в INDEX як номери рядків, і INDEX повертає ім'я в цій позиції.

Немасивна версія з LOOKUP

Ви можете створити формулу без масиву для вилучення унікальних елементів, використовуючи гнучку функцію LOOKUP:

=LOOKUP(2,1/(COUNTIF($D$4:D4,list)=0),list)

Конструкція формули схожа на формулу INDEX MATCH вище, але LOOKUP може обробляти операцію з масивом безпосередньо.

  • COUNTIF повертає підрахунок кожного значення зі "списку" в діапазоні, що розширюється $ D $ 4: D4
  • Порівняння з нулем створює масив значень TRUE і FALSE
  • Число 1 ділиться на масив, створюючи масив з 1s та помилками # DIV / 0
  • Цей масив стає вектором пошуку в LOOKUP
  • Значення пошуку 2 більше, ніж будь-яке значення у векторі пошуку
  • LOOKUP відповідатиме останньому значенню, що не містить помилок у масиві підстановки
  • LOOKUP повертає відповідне значення в result_vector, названий діапазон "list"

Витягніть елементи, які з’являються лише один раз

Наведену вище формулу LOOKUP легко розширити за допомогою логічної логіки. Щоб витягти список унікальних елементів, які з’являються лише один раз у вихідних даних, можна скористатися такою формулою:

=LOOKUP(2,1/((COUNTIF($D$4:D4,list)=0)*(COUNTIF(list,list)=1)),list)

Єдиним доповненням є другий вираз COUNTIF:

COUNTIF(list,list)=1

Тут COUNTIF повертає масив підрахунків елементів таким чином:

(2;2;2;2;2;1;2)

які порівнюються з 1, що призводить до масиву значень TRUE / FALSE:

(FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE)

які діють як "фільтр", щоб обмежити вихід до елементів, які трапляються лише один раз у вихідних даних.

Хороші посилання

Як витягти унікальний унікальний (Оскар Кронкіст, отримати цифрову допомогу)

Цікаві статті...