Последовательность уникальных значений в пределах другого уникального значения в Excel - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать формулу, которая проверяет столбец A на наличие уникальных значений, затем берет это значение и проверяет столбец B на наличие уникальных значений и упорядочивает их последовательно в столбце C. Столбец C - это место, где идет формула. Его нет в фактическом наборе данных.

Я хочу, чтобы мой набор данных выглядел так.

enter image description here

Например, Я хочу найти уникальный номер записи "123-A". Затем я хочу заглянуть в этот номер записи, найти уникальные коды в столбце B и расположить их последовательно. Первые два одинаковые, так что они оба являются последовательностью 1. Затем третья строка как новый код, «Y09», поэтому он получит последовательность 2. После определения следующего уникального номера записи я хочу сбросить последовательный счет. Спасибо!

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Похоже, что ваши данные уже организованы / отсортированы по значениям столбца A и B . Если это так, мы можем построить формулу, реализующую следующие правила:

  1. , если соседние значения A и B соответствуют значениям над ними, скопируйте значение C сверху
  2. , если соседнее значение A соответствует значению над ним, но значение B не , затем увеличьте значение C сверху.
  3. Если значение A не соответствует значению над ним, установите C значение 1

In C2 введите 1. В C3 введите:

=IF(AND(A3=A2,B3=B2),C2,IF(A3=A2,C2+1,1))

и скопируйте вниз:

enter image description here

, если ваши данные не организованы так же, как указано на вашем изображении, проигнорируйте это решение.

1 голос
/ 18 июня 2020

Итак, первое, что мы хотим сделать, это проверить, выделен ли номер уже . Поскольку нужно проверить 2 столбца, нам нужно использовать INDEX MATCH с условием массива вместо VLOOKUP:

INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0))

Эти формулы предназначены для ячейки C2 - обратите внимание, как мы оставили секунда ячейка в каждой ссылке на диапазон без $ для фиксации на месте. Это означает, что он всегда будет останавливаться в строке выше формулы

Если это работает, все готово. Если это не соответствует , мы получим ошибку, поэтому мы можем использовать IFERROR:

=IFERROR(INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0)), ???)

On для замены этих вопросительных знаков!

Поскольку мы не Если совпадения нет, нам нужно найти совпадение наибольшее для номера записи и добавить к нему 1. Если у вас есть Office365 или Office2019, мы можем просто использовать функцию MAXIFS. В противном случае нам придется использовать SUMPRODUCT и MAX, чтобы получить тот же результат: (Если номер записи не существует, будет возвращено 0)

MAXIFS($C$1:$C1, $A$1:$A1, $A2)

SUMPRODUCT(MAX($C$1:$C1 * ($A$1:$A1=$A2)))

Затем добавьте 1:

=IFERROR(INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0)), MAXIFS($C$1:$C1, $A$1:$A1, $A2) + 1)

=IFERROR(INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0)), SUMPRODUCT(MAX($C$1:$C1 * ($A$1:$A1=$A2))) + 1)
...