сложная формула EXCEL IF или VBA - PullRequest
0 голосов
/ 06 июля 2010

у меня есть этот набор данных:

92127
96001-1
94533-1
95630
95677
95630

мне нужен этот вывод

92127-1
95630-1
95677-1
95630-2

вот логика:

, если 92127 не существует вэтот столбец, то он должен быть 92127-1;однако, если он существует, то он должен быть 92127- (что когда-либо наибольшее число здесь +1), поэтому, если наибольшее число 92127-5, то оно должно сделать это 92127-6

Можно ли превратить это в формулу?

Ответы [ 2 ]

3 голосов
/ 06 июля 2010

Вот мой:

=IF(LEN(A2)>5,A2,A2&"-"&SUMPRODUCT(--(LEFT($A$2:$A2,5)=LEFT(A2,5))))

A2: A7

92127
96001-1
94533-1
95630
95677
95630

B2: B7 (где вы положили формулу)

92127-1
96001-1
94533-1
95630-1
95677-1
95630-2

Редактировать: Выше предполагается, что первый экземпляр пятизначного начального числа не имеет -n и использует счет этого пятизначного начального числа для добавления -n к последующим экземплярам. Однако, если первый экземпляр, скажем, 95630, это 95630-2, то вышеприведенное не выполняется. Манипуляции со строками плохо работают с формулами массива, поэтому я думаю, что единственный вариант - использовать вспомогательные столбцы. С вашими данными в A2: A7,

B2: =IF(ISERR(FIND("-",A2)),A2,LEFT(A2,5))
C2: =IF(ISERR(FIND("-",A2)),0,MID(A2,FIND("-",A2)+1,LEN(A2)))
D2: =B2&"-"&IF(ISERR(FIND("-",A2)),MAX(($B$2:$B$7=B2)*($C$2:$C$7))+1,C2)

и заполните до строки 7. B2 и C2 разбивают число на пять начальных цифр и суффикс -n, если таковые имеются. Если нет -n, он возвращает 0. D2 вводится с помощью Control + Shift + Enter, потому что это формула массива. Он находит максимум -n для текущих пяти старших цифр, добавляет одну и добавляет ее к пяти старшим цифрам.

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

1 голос
/ 06 июля 2010

Так как вы хотите сохранить «-1» для того, что есть (согласно комментарию), это должно работать:

Предполагая, что «Существующий» находится в ячейках A2: An, эта формула идет в B2,и может быть скопирован до Bn.

=LEFT(A2,5)&TEXT(COUNTIF(A$2:A2,LEFT(A2,5))+IF(ISERROR(VALUE(MID(A2,7,1))),0,VALUE(MID(A2,7,1))),"-0;;")

Мои результаты таковы:

Существующий

92127
96001-1 
94533-1 
95630
95677
95630

Новый

92127-1
96001-1
94533-1
95630-1
95677-1
95630-2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...