Как я могу построить формулу, чтобы получить желаемый результат ниже.
В настоящее время формула будет давать текущий вывод с порядковой нумерацией столбца 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, чтобы получить правильный динамический порядковый номер, возможно ли добиться этого с помощью формулы?
@Stringeater объяснит приведенный выше пример изображения, если тип проекта — «Новый», нумерация начинается с -1 и добавляет -2, если есть новый подпроцесс в том же новом типе проекта, иначе, если есть дублирующий подпроцесс в том же новом типе проекта. затем продолжите с тем же номером нового типа проекта, который здесь -1, это будет продолжаться до тех пор, пока он не встретит новый тип проекта, и оттуда снова начнется перенумерация, если есть новый подпроцесс, иначе он продолжится с -1, если есть дубликаты. Надеюсь, я имеет смысл, дайте мне знать
Пунктуация пожалуйста. Легче догадаться, чего вы пытаетесь достичь, прочитав вашу формулу, чем прочитав ваш комментарий. В основном вам нужен счетчик, который помечает каждое новое уникальное значение столбца Sub-Process name
; что до следующего появления столбца «Новый» в Project type
, который сбросит счетчик на 1.
Вы отметили как Excel 2007, так и 2010, с какой версией он должен быть совместим? Явно не оба. Также ваши данные можно выложить в виде таблицы уценки вместо скриншота tablesgenerator.com/markdown_tables# так же лучше объясняйте логику в своем посте, а не в комментариях.
@P.b хорошо, я пометил оба, так как я ушел, формула может работать в любых версиях excel. Определенно будет использовать таблицу уценки, не использовал ее раньше ... спасибо за выделение того же
Есть различия в версиях Excel. Чем новее ваш Excel, тем больше и лучше возможных решений. Какая у вас версия Office 365?
@P.b да, офис 365, надеюсь, что приведенный выше запрос выглядит достижимым, надеюсь, это можно сделать?
Затем посмотрите на XLOOKUP вместо VLOOKUP. Вы можете настроить поиск сверху вниз.
Если вы ищете решение на основе формулы с одной ячейкой, эта сумасшедшая формула должна вам помочь:
=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», пожалуйста, помогите мне в этом, чтобы я мог принять этот ответ, надеюсь, это достижимо?
Переместить столбец из I в B должно быть легко. Попробуйте просто вырезать и вставить весь столбец. Ссылки должны корректироваться правильно. Вторая часть не так проста, но, думаю, достижима. Скорее всего, мне придется отредактировать часть FIND
, которая ищет предыдущие результаты, чтобы извлечь максимальное значение. Просто чтобы быть уверенным: это конечная цель? Главный недостаток таких сумасшедших формул в том, что их нелегко редактировать (или отлаживать). И кстати: технически мне не нужно предоставлять дальнейшее редактирование, чтобы вы приняли ответ, поскольку он действительно отвечает на исходный вопрос. ;) Тем не менее я, вероятно, [...]
[...] придумать что-нибудь завтра просто для удовольствия.
"добавляя конец формулы "&"."&C2, что означает, что желаемый результат должен выглядеть как "pc3-1.0" и "pc5-1.1" часть цитаты является конечной целью этой сумасшедшей формулы :-), также когда Я перемещаю столбец с I на B, выходное значение изменилось, поэтому я беспокоился ... пожалуйста, помогите мне с этим окончательным выводом ... извините за редактирование в последнюю минуту ...
не могли бы вы сообщить мне, может ли приведенная выше формула быть завершена с желаемым результатом, решение теперь выглядит как наполовину испеченная еда :-) .. надеюсь, что это достижимо
В ответ добавлена новая формула.
спасибо за формулу, вы Gem :-) ну, теперь я в ситуации, когда название Proj также снова появляется как «Существующий» тип проекта любых новых типов проектов, тогда он должен изменить нумерацию на PC7-3.1 или любой номер серии (вы можете видеть это на изображении выше), надеюсь, это может быть достигнуто !!! Еще раз и очень извините за изменение и редактирование в последнюю минуту
Вам действительно нужно улучшить свои коммуникативные навыки. Пуктуации - это вещь. Кроме того, слова должны быть расположены так, чтобы иметь связный и ясный смысл. Например, поставить «если» перед условием, за которым следует «тогда», чтобы объявить о последующем действии (работает как в межличностном общении, так и в кодировании). Это в сторону: я четко спросил вас, предназначался ли ваш последний запрос для изображения конечной цели, и вы сказали, что это был окончательный результат. Теперь вы просите больше редактировать? Я не люблю, когда мне лгут, когда мне платят, тем более, когда я помогаю бесплатно. Объясните свою последнюю просьбу надлежащим образом [...]
[...] английский, и я мог бы сделать последнее усилие.
Обязательно приму ваше предложение по улучшению моего словарного запаса, извините за неудобства. Согласно приложенному выше изображению таблицы, помимо предыдущего результата, окончательное дополнительное изменение будет следующим: если значение «название проекта» повторяется в том же столбце, то счетчик должен начать добавлять номер суффикса. В приведенном выше сценарии значение «Учетная запись» повторяется, поэтому значение «Желаемый результат» должно быть pc4-2.1, pc5-3.1, pc7-4.1, pc11-5.1 и т. д., пока то же значение (Учетная запись) не повторится в столбец, это правило распространяется и на другое значение «Название проекта».
Надеюсь, у вас все хорошо!! Надеюсь, что описанный выше сценарий достижим, дайте мне знать, если у вас есть какие-либо разъяснения.
А как насчет всех предыдущих условий? Сначала вы просили формулу для подсчета каждого уникального значения одного и того же Sub-Process name
в каждом «новом» Project type
. Теперь вы запрашиваете последовательность каждого класса Proj title
независимо от того, в каком проекте они находятся? Я сбит с толку, потому что вы помещаете результат (скажем, цифру 2 в pc4-2.1
) на то же место, которое ранее использовалось для результата первой задачи. Вы хотели разместить его в другом месте или полностью меняете желаемый результат? В любом случае: pc6
также имеет Graphics
как Project title
, поэтому pc8
должно вернуться pc8-2-1
.
По сути, если вы действительно меняете желаемый результат, ваш последний запрос будет удовлетворяться по формуле вроде: =A2&"-"&COUNTIF($E$1:E2,E2)&"."&D2
предыдущая концепция формулы «формула для подсчета каждого уникального значения одного и того же имени подпроцесса в каждом «новом» типе проекта» не изменится, она останется такой, какая она есть, это дополнительное изменение, которое необходимо включить в старую формулу , в приведенном выше сценарии значение «Учетная запись» повторяется после «Нового» типа проекта и названия проекта «Графика» (т. «Название проекта» в этом случае значение «Желаемый результат» должно быть pc11-5.0, этот сценарий также будет применяться к любому «Названию проекта» после «Новый».
Я просто сделаю дикое предположение и предположу, что нужно подсчитать, сколько Proj title
произошло с момента последней полосы с тем же самым Proj title
и «Новым» в Project type
. Затем снова: результат будет сообщен в том же месте, что и предыдущий результат. Для меня это не имеет особого смысла, но я думаю, что можно сделать этот новый запрос первым уровнем анализа, а затем (если не произошло предыдущей комбинации «Новый» Project type
и данного Proj title
) будут применяться старые правила.
Я думаю, ваш анализ верен, вы можете соответствующим образом обновить формулу, которая будет полезна !!
Выложена новая формула. Нет решения для одной ячейки; требуется 2. Все еще не понимаю общей логики структуры вывода, но если это то, что вы хотите, то пусть будет так.
Что ж, оказалось лучшим решением для требования, спасибо за ваше терпение и поддержку 👍
Извините, но я не могу понять логику. Очевидно, что первые 3 символа
Desired output
— это значения вRequest code
. Но какова логика однозначного числа? Я просто понимаю, что это должно быть 1, еслиProject type
«Новый». Пожалуйста, объясни.