Как создать инкрементное вычисляемое поле на основе другого поля - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть таблица Excel с этими столбцами ....

ID, местоположение, ProductName, ProductCode

Пример данных ....

ID, Location, ProductName, ProductCode
1, Miami, Gloves, 100
2, Tampa, Gloves, 203
3, Miami, Hats, 101
4, Tampa, Hats, 204
5, Miami, Balls, 102
6, Tampa, Balls, 205

Как видите, в настоящее время один и тот же продукт может иметь разные коды товаров в зависимости от местоположения.В Gloves используются 100 (Майами) и 203 (Тампа).

Моя цель - создать столбец NewProductCode.NewProductCode будет ЖЕ для каждого продукта, использующего одно и то же ProductName, и будет начинаться с 500. Таким образом, если взять тот же список, это будет результат ....

ID, Location, ProductName, ProductCode, NewProductCode
1, Miami, Gloves, 100, 500
2, Tampa, Gloves, 203, 500
3, Miami, Hats, 101, 501
4, Tampa, Hats, 204, 501
5, Miami, Balls, 102, 502
6, Tampa, Balls, 205,502

Поскольку существует более 1000 записей, я бы предпочел, чтобы NewProductCode был полем CALCULATED.Так что, в принципе, я мог бы сначала отсортировать список по ProductName.Затем вычислите коды NewProductCodes для аналогичных продуктов, имеющих тот же код, затем увеличьте для следующего и т. Д. ...

Как я могу это сделать?Это вообще возможно?

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Это вернет правильный код, даже если таблица не отсортирована:

Поместите 500 в E2 и в E3 поместите эту формулу:

=IFERROR(INDEX($E$1:E2,MATCH(C3,$C$1:C2,0)),MAX($E$1:E2)+1)

Он попытается найти совпадение, если он это делает, он возвращает то же значение.Если совпадение не найдено, возвращается максимальное значение + 1.

enter image description here


Если оно всегда отсортировано по ProductName, тогда простой IF можетиспользоваться вместо формулы выше:

=IF(C2<>C3,E2+1,E2)

enter image description here

1 голос
/ 30 апреля 2019

Просто альтернатива, как мне нравятся эти загадки:)

В E2 положить:

=SUMPRODUCT(--(FREQUENCY(MATCH($C$2:C2,$C$2:C2,0),ROW($C$2:C2)-ROW($C$2)+1)>0))+499

И перетащите вниз.

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