Как создать формулу для динамической строки в столбце с динамической порядковой нумерацией

Как я могу построить формулу, чтобы получить желаемый результат ниже.

В настоящее время формула будет давать текущий вывод с порядковой нумерацией столбца F (Sub-processname), но проблема заключается в том, что когда строка столбца типа проекта между ними начинается с «Новый», нумерация порядкового порядка должна снова начинаться с последовательности число 1, за которым следует то же имя подпроцесса, что и (пример на изображении: - pc3-1, pc5-1), между ними, если есть «Существующий» с новым именем подпроцесса, тогда число изменяется на 2 или 3 в зависимости от нового имя подпроцесса (пример на изображении pc4-2, pc4 находится в первом столбце, который является кодом запроса).

=IF(COUNTIF(F$2:F2,F2)=1,MAX(G$1:G1)+1,VLOOKUP(F2,F$1:G1,2,0))

Приведенная выше формула используется в столбце G, но она будет проверять только столбец F, но мне также нужно включить столбец B, чтобы получить правильный динамический порядковый номер, возможно ли добиться этого с помощью формулы?

Извините, но я не могу понять логику. Очевидно, что первые 3 символа Desired output — это значения в Request code. Но какова логика однозначного числа? Я просто понимаю, что это должно быть 1, если Project type «Новый». Пожалуйста, объясни.

Stringeater 01.04.2023 22:25

@Stringeater объяснит приведенный выше пример изображения, если тип проекта — «Новый», нумерация начинается с -1 и добавляет -2, если есть новый подпроцесс в том же новом типе проекта, иначе, если есть дублирующий подпроцесс в том же новом типе проекта. затем продолжите с тем же номером нового типа проекта, который здесь -1, это будет продолжаться до тех пор, пока он не встретит новый тип проекта, и оттуда снова начнется перенумерация, если есть новый подпроцесс, иначе он продолжится с -1, если есть дубликаты. Надеюсь, я имеет смысл, дайте мне знать

lifeinvba 02.04.2023 06:36

Пунктуация пожалуйста. Легче догадаться, чего вы пытаетесь достичь, прочитав вашу формулу, чем прочитав ваш комментарий. В основном вам нужен счетчик, который помечает каждое новое уникальное значение столбца Sub-Process name; что до следующего появления столбца «Новый» в Project type, который сбросит счетчик на 1.

Evil Blue Monkey 02.04.2023 10:17

Вы отметили как Excel 2007, так и 2010, с какой версией он должен быть совместим? Явно не оба. Также ваши данные можно выложить в виде таблицы уценки вместо скриншота tablesgenerator.com/markdown_tables# так же лучше объясняйте логику в своем посте, а не в комментариях.

P.b 02.04.2023 11:03

@P.b хорошо, я пометил оба, так как я ушел, формула может работать в любых версиях excel. Определенно будет использовать таблицу уценки, не использовал ее раньше ... спасибо за выделение того же

lifeinvba 02.04.2023 22:12

Есть различия в версиях Excel. Чем новее ваш Excel, тем больше и лучше возможных решений. Какая у вас версия Office 365?

P.b 02.04.2023 22:55

@P.b да, офис 365, надеюсь, что приведенный выше запрос выглядит достижимым, надеюсь, это можно сделать?

lifeinvba 04.04.2023 16:15

Затем посмотрите на XLOOKUP вместо VLOOKUP. Вы можете настроить поиск сверху вниз.

P.b 04.04.2023 16:37
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
8
225
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы ищете решение на основе формулы с одной ячейкой, эта сумасшедшая формула должна вам помочь:

=A2&"-"&IF(COUNTIF($B$1:B2,"New")<>COUNTIF($B$1:B1,"New"),1,IFERROR(MID(INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($B$1:$B100)/($B$1:$B100 = "New"),COUNTIF($B$1:B2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(F2,INDIRECT("F"&AGGREGATE(15,6,ROW($B$1:$B100)/($B$1:$B100 = "New"),COUNTIF($B$1:B2,"New"))&":"&CELL("address",F1)),0)),FIND("-",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($B$1:$B100)/($B$1:$B100 = "New"),COUNTIF($B$1:B2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(F2,INDIRECT("F"&AGGREGATE(15,6,ROW($B$1:$B100)/($B$1:$B100 = "New"),COUNTIF($B$1:B2,"New"))&":"&CELL("address",F1)),0)))+1,999),AGGREGATE(14,6,MID(INDIRECT("R"&AGGREGATE(15,6,ROW($B$1:$B100)/($B$1:$B100 = "New"),COUNTIF($B$1:B2,"New"))&"C[0]:R[-1]C[0]",FALSE),FIND("-",INDIRECT("R"&AGGREGATE(15,6,ROW($B$1:$B100)/($B$1:$B100 = "New"),COUNTIF($B$1:B2,"New"))&"C[0]:R[-1]C[0]",FALSE))+1,999)*1,1)+1))

Он охватывает список от B1 до B100. Если вы хотите увеличить охват, в формуле измените ссылку $B$1:$B100 соответствующим образом.


ПОСТ-КОММЕНТАРИИ РЕДАКТИРОВАТЬ

Вот формула, обновленная в соответствии с комментариями:

=A2&"-"&IF(COUNTIF($C$1:C2,"New")<>COUNTIF($C$1:C1,"New"),1,IFERROR(MID(INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)),FIND("-",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)))+1,FIND(".",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)))-FIND("-",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)))-1),AGGREGATE(14,6,MID(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),FIND("-",INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE))+1,FIND(".",INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE))-FIND("-",INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C100)/($C$1:$C100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE))-1)*1,1)+1))&"."&D2

2-й пост-комментарии РЕДАКТИРОВАТЬ

Я не могу найти способ составить единую формулу для достижения новой цели. Этого можно добиться, поместив эту формулу в ячейку B2:

=IF(COUNTIFS($C$1:C2,"New",$E$1:E2,E2)>0,A2&"-"&IF(C2 = "New",1,COUNTIF(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New")/($E$1:$E$100=E2),COUNTIFS($C$1:C2,"New",$E$1:E2,E2))&"C"&RIF.COLONNA(E2)&":R[-1]C"&RIF.COLONNA(E2),FALSE),E2)+1)&"."&D2,H2)

А этот (по сути, предыдущий) в ячейке H2:

=A2&"-"&IF(COUNTIF($C$1:C2,"New")<>COUNTIF($C$1:C1,"New"),1,IFERROR(MID(INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)),FIND("-",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)))+1,FIND(".",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)))-FIND("-",INDEX(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),MATCH(G2,INDIRECT("G"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&":"&CELL("address",G1)),0)))-1),AGGREGATE(14,6,MID(INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE),FIND("-",INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE))+1,FIND(".",INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE))-FIND("-",INDIRECT("R"&AGGREGATE(15,6,ROW($C$1:$C$100)/($C$1:$C$100 = "New"),COUNTIF($C$1:C2,"New"))&"C[0]:R[-1]C[0]",FALSE))-1)*1,1)+1))&"."&D2

хорошо, ваша сумасшедшая формула творит чудеса!!, это именно то, что мне нужно, только теперь я хочу, чтобы ваша помощь добавила новый столбец между столбцами A и B и переместила столбец желаемого вывода из последней строки в столбец B в этом случае C столбец будет иметь тип проекта, и дополнительная вещь, которую я хочу добавить, это столбец версии (здесь это столбец C), который должен быть добавлен в конец формулы "&"."&C2, что означает, что желаемый результат должен выглядеть так «pc3-1.0» и «pc5-1.1», пожалуйста, помогите мне в этом, чтобы я мог принять этот ответ, надеюсь, это достижимо?

lifeinvba 02.04.2023 22:44

Переместить столбец из I в B должно быть легко. Попробуйте просто вырезать и вставить весь столбец. Ссылки должны корректироваться правильно. Вторая часть не так проста, но, думаю, достижима. Скорее всего, мне придется отредактировать часть FIND, которая ищет предыдущие результаты, чтобы извлечь максимальное значение. Просто чтобы быть уверенным: это конечная цель? Главный недостаток таких сумасшедших формул в том, что их нелегко редактировать (или отлаживать). И кстати: технически мне не нужно предоставлять дальнейшее редактирование, чтобы вы приняли ответ, поскольку он действительно отвечает на исходный вопрос. ;) Тем не менее я, вероятно, [...]

Evil Blue Monkey 02.04.2023 23:06

[...] придумать что-нибудь завтра просто для удовольствия.

Evil Blue Monkey 02.04.2023 23:06

"добавляя конец формулы "&"."&C2, что означает, что желаемый результат должен выглядеть как "pc3-1.0" и "pc5-1.1" часть цитаты является конечной целью этой сумасшедшей формулы :-), также когда Я перемещаю столбец с I на B, выходное значение изменилось, поэтому я беспокоился ... пожалуйста, помогите мне с этим окончательным выводом ... извините за редактирование в последнюю минуту ...

lifeinvba 03.04.2023 08:39

не могли бы вы сообщить мне, может ли приведенная выше формула быть завершена с желаемым результатом, решение теперь выглядит как наполовину испеченная еда :-) .. надеюсь, что это достижимо

lifeinvba 04.04.2023 13:59

В ответ добавлена ​​новая формула.

Evil Blue Monkey 04.04.2023 17:17

спасибо за формулу, вы Gem :-) ну, теперь я в ситуации, когда название Proj также снова появляется как «Существующий» тип проекта любых новых типов проектов, тогда он должен изменить нумерацию на PC7-3.1 или любой номер серии (вы можете видеть это на изображении выше), надеюсь, это может быть достигнуто !!! Еще раз и очень извините за изменение и редактирование в последнюю минуту

lifeinvba 05.04.2023 18:31

Вам действительно нужно улучшить свои коммуникативные навыки. Пуктуации - это вещь. Кроме того, слова должны быть расположены так, чтобы иметь связный и ясный смысл. Например, поставить «если» перед условием, за которым следует «тогда», чтобы объявить о последующем действии (работает как в межличностном общении, так и в кодировании). Это в сторону: я четко спросил вас, предназначался ли ваш последний запрос для изображения конечной цели, и вы сказали, что это был окончательный результат. Теперь вы просите больше редактировать? Я не люблю, когда мне лгут, когда мне платят, тем более, когда я помогаю бесплатно. Объясните свою последнюю просьбу надлежащим образом [...]

Evil Blue Monkey 05.04.2023 22:43

[...] английский, и я мог бы сделать последнее усилие.

Evil Blue Monkey 05.04.2023 22:44

Обязательно приму ваше предложение по улучшению моего словарного запаса, извините за неудобства. Согласно приложенному выше изображению таблицы, помимо предыдущего результата, окончательное дополнительное изменение будет следующим: если значение «название проекта» повторяется в том же столбце, то счетчик должен начать добавлять номер суффикса. В приведенном выше сценарии значение «Учетная запись» повторяется, поэтому значение «Желаемый результат» должно быть pc4-2.1, pc5-3.1, pc7-4.1, pc11-5.1 и т. д., пока то же значение (Учетная запись) не повторится в столбец, это правило распространяется и на другое значение «Название проекта».

lifeinvba 11.04.2023 23:19

Надеюсь, у вас все хорошо!! Надеюсь, что описанный выше сценарий достижим, дайте мне знать, если у вас есть какие-либо разъяснения.

lifeinvba 12.04.2023 15:23

А как насчет всех предыдущих условий? Сначала вы просили формулу для подсчета каждого уникального значения одного и того же Sub-Process name в каждом «новом» Project type. Теперь вы запрашиваете последовательность каждого класса Proj title независимо от того, в каком проекте они находятся? Я сбит с толку, потому что вы помещаете результат (скажем, цифру 2 в pc4-2.1) на то же место, которое ранее использовалось для результата первой задачи. Вы хотели разместить его в другом месте или полностью меняете желаемый результат? В любом случае: pc6 также имеет Graphics как Project title, поэтому pc8 должно вернуться pc8-2-1.

Evil Blue Monkey 12.04.2023 17:41

По сути, если вы действительно меняете желаемый результат, ваш последний запрос будет удовлетворяться по формуле вроде: =A2&"-"&COUNTIF($E$1:E2,E2)&"."&D2

Evil Blue Monkey 12.04.2023 17:51

предыдущая концепция формулы «формула для подсчета каждого уникального значения одного и того же имени подпроцесса в каждом «новом» типе проекта» не изменится, она останется такой, какая она есть, это дополнительное изменение, которое необходимо включить в старую формулу , в приведенном выше сценарии значение «Учетная запись» повторяется после «Нового» типа проекта и названия проекта «Графика» (т. «Название проекта» в этом случае значение «Желаемый результат» должно быть pc11-5.0, этот сценарий также будет применяться к любому «Названию проекта» после «Новый».

lifeinvba 12.04.2023 19:40

Я просто сделаю дикое предположение и предположу, что нужно подсчитать, сколько Proj title произошло с момента последней полосы с тем же самым Proj title и «Новым» в Project type. Затем снова: результат будет сообщен в том же месте, что и предыдущий результат. Для меня это не имеет особого смысла, но я думаю, что можно сделать этот новый запрос первым уровнем анализа, а затем (если не произошло предыдущей комбинации «Новый» Project type и данного Proj title) будут применяться старые правила.

Evil Blue Monkey 12.04.2023 22:09

Я думаю, ваш анализ верен, вы можете соответствующим образом обновить формулу, которая будет полезна !!

lifeinvba 12.04.2023 23:36

Выложена новая формула. Нет решения для одной ячейки; требуется 2. Все еще не понимаю общей логики структуры вывода, но если это то, что вы хотите, то пусть будет так.

Evil Blue Monkey 14.04.2023 20:58

Что ж, оказалось лучшим решением для требования, спасибо за ваше терпение и поддержку 👍

lifeinvba 24.04.2023 10:37

Другие вопросы по теме