Ранжування та планування


1

У мене рейтинг списку 7 професіоналів. Ранг 1 - найвищий. Я намагаюся вирішити цю проблему там, де мені вдається знайти найвищий рейтинг і другий найвищий доступний за кожен місяць. Наприклад, у січні Маркус має значення під своїм іменем, тому я хочу, щоб стовпець верхнього рангу відображав 20, а другий верхній ранг показував Полу, оскільки він має нульове значення нижче свого імені. Я хочу, щоб Ентоні був ігнорований за січень, оскільки значення під його іменем немає.

Список рейтингів

Діаграма планування

Відповіді:


0

Трохи переорганізувавши таблицю результатів, щоб забезпечити деяку гнучкість. Дивіться зображення внизу для ознайомлення з клітинками та викладайте їх. Замість того, щоб сказати про вищий ранг і 2-й ранг, я поставив заголовок вище, що сказав RANK, а потім під цим номером, що представляє позицію. Я зробив це, щоб ви могли просто перетягнути формулу вправо, і вона потягне за рангом на основі номера рангу в заголовку.

Використовуючи еталонні діапазони у наведеному нижче прикладі, розмістіть у J3 таку формулу та скопіюйте вниз та вправо за необхідністю.

=IFERROR(INDEX($2:$2,AGGREGATE(15,6,COLUMN($B$3:$H$3)/(INDEX($B$3:$H$6,MATCH($I3,$A$3:$A$6,0),0)<>""),J$2)),"None")

POC

ОНОВЛЕННЯ - Пояснення

дозволимо розбити цю формулу на окремі її компоненти

Почнемо з сукупної формули, в якій закопано пару формул:

AGGREGATE(15,6,COLUMN($B$3:$H$3)/(INDEX($B$3:$H$6,MATCH($I3,$A$3:$A$6,0),0)<>""),J$2)

Причина, по якій я витягнув цю частину, полягає в тому, що все, що відбувається всередині неї, є масивом, як операції. Давайте поринемо трохи далі і подивимось частину матчу, а потім повернемося звідти:

MATCH($I3,$A$3:$A$6,0)

Ця формула поверне ціле число, яке відображає, де значення в I3 (січень) знаходиться у списку $ A $ 3: $ A $ 6. Іншими словами, ми намагаємось визначити, який рядок у вашій довідковій таблиці ви хочете переглянути. У цьому випадку його 1 для першого пункту у списку. Якщо січня не було в списку, то він поверне помилку, яка поширюватиметься за формулами.

Далі розглянемо формулу індексу:

INDEX($B$3:$H$6,MATCH($I3,$A$3:$A$6,0),0)

INDEX(TABLE, ROWS TO GO DOWN, COLUMNS TO MOVE OVER)

Подумайте про формулу індексу як визначте свою таблицю, спустіться вниз Y рядки та перейдіть через X стовпців У цьому випадку $ B $ 3: $ H $ 6 представляє ваші дані без міток заголовка / рядка. MATCHФормула говорить нам , скільки рядків йти вниз. 0 в кінці робить акуратний маленький трюк, який є особливим. Оскільки ви не можете перейти через 0 стовпців, в цьому спеціальному випадку 0 INDEXінтерпретується це як прийняти всі стовпці, також відомі як весь рядок визначеної таблиці. на бічній примітці подібна річ відбувається, коли ви використовуєте 0 для того, скільки рядків потрібно опустити вниз.

Наступним кроком є ​​робота масиву та порівняння.

INDEX() <> ""

В основному, це проходить через кожен стовпець і перевіряє, чи є запис пустим чи є щось у ньому. Якщо його порожнє, воно поверне FALSE, а не blank поверне TRUE. Тепер причина, яку ми робимо це, полягає в тому, що наступним кроком ми поділимо його на значення ІСТИНА або ЛЖА. Excel перетворює TRUE і FALSE відповідно до 1 і 0 відповідно, коли вони надсилаються через математичну операцію. Тож тут відбуваються дві важливі речі. Поділ на 1 не змінює значення нічого. вона по суті нічого не робить. Ділення на 0 спричиняє помилку на поділ на 0, що призведе до пропорції. Це насправді те, що нам потрібно. Тепер, що ми насправді ділимо?

COLUMN($B$3:$H$3)

Це все ще знаходиться у масиві формули сукупності. Таким чином, він створить список, оскільки масив перебирається через кожну комірку. Отже, в основному те, що відбувається, створюється список номерів стовпців SPREADSHEET. і що ще важливіше - список номерів стовпців електронних таблиць, розділених на 1, які ми хочемо, і розділених на 0, що дає помилку, яку ми не хочемо. Тому тепер давайте подивимось на сукупність:

AGGREGATE(15,6,COLUMN($B$3:$H$3)/(INDEX($B$3:$H$6,MATCH($I3,$A$3:$A$6,0),0)<>""),J$2)

AGGREGATE(Function number, OPERATION #, formula, Option value)

В основному ми вибираємо функцію 15, яка буде сортувати список результатів функції та упорядковувати їх від найменших до найбільших. Функція 15 також змушує агрегат виконувати операції з масивом. Не всі номери функцій будуть. 6 розповідає сукупність значенням помилки IGNORE. Таким чином, всі ті, які поділяються на 0 помилок, ігноруються, як і потенційна помилка не знайдена помилка з функції відповідності. Формула, яку ми обговорювали вище про те, що вона робить, і значенням опціону в цьому випадку є те, яку позицію вгорі списку ви хочете. 1 поверне найменше число, 2 друге найменше число тощо. У цьому CASE я встановив його, щоб подивитися на номер у заголовку замість жорсткого кодування у формулу. Зрештою, AGGREGATE в цьому випадку поверне єдине ціле число, відповідне номеру стовпця SPREADSHEET, який ви шукаєте.

INDEX($2:$2,AGGREGATE(...))

У цьому випадку я взяв усі рядки 2 як таблиці. Оскільки лише 1 рядок, мені не потрібно вводити рядки вниз і стовпці, як у попередній таблиці. Це виглядає як список, і мені просто потрібно вказати, наскільки далеко в списку я хочу зайти. Отже, оскільки у нас є номер стовпця SPREADSHEET, нам потрібно переглянути весь рядок електронних таблиць, де ви заголовок, таким чином, номер стовпця електронної таблиці повертається сукупними рядками вгору з таблицею електронних таблиць в індексі.

У складі, де нікого не знайдено, IE немає рангу № 1, Aggregate повертає помилку. Для вирішення цього питання ми використовуємо функцію IFERROR. якщо помилки немає, функція функціонує як звичайна і повертає свій результат. Якщо є помилка, вона повертається в нашому випадку "немає".


дякую за відповідь, якщо у вас є кілька секунд, чи можете ви пояснити, як це працює. Я хочу дізнатися, як ти це працював. Ще раз дякую за допомогу
Deepak Ahuja

@DeepakAhuja додано пояснення
Forward Ed

велике спасибі, це найкорисніша відповідь. Я ціную час і зусилля, які ви доклали до цього.
Діпак Ахуджа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.