В Column L
я хочу отображать для каждого продукта самую первую маржу для каждого продукта, которая является второй непустой ячейкой в каждой строке.
На данный момент мне удалось разработать эту формулу:
=XLOOKUP(TRUE,ISNUMBER(C2:J2),C2:J2)
Это правильно дает мне самые первые продажи, которые являются первой непустой ячейкой в каждой строке.
Как мне изменить его, чтобы отображать вторую непустую ячейку в каждой строке?
Вероятно, несколько вариантов. Вот пример с использованием BYROW
, FILTER
и INDEX
:
=BYROW(C2:J8,LAMBDA(x, INDEX(FILTER(x,ISNUMBER(x)),,2)))
Поздно... Я придумал =IFERROR(INDEX(FILTER(B2:J2, ISNUMBER(B2:J2)), 2), "No second value")
Но твой лучше :)
ммм, когда я использую вашу формулу, она возвращает #ЗНАЧЕНИЕ!. Не уверен, связано ли это с моим Excel. Я использую Office365. Я также перевел формулу в немецкий формат. На скриншоте я вижу, что на вашей стороне все работает.
Странный. Я не могу повторить #VALUE! ошибка, но может создать #REF! или #CALC! ошибка...
Я думаю, что проблема в функции BYROW. У меня та же проблема с функцией BYCOL. Когда я использую английское имя, оно не распознается, и я получаю сообщение #NAME? ошибка. Я искал перевод на немецкий язык, но, похоже, его нет.
@Michi, воспользовавшись этим веб-сайтом, получит перевод всех функций с английского на немецкий. excelhero.de/excel-funktionen
Со старыми функциями. В ячейке F1 и перетащите вниз. Если второго значения не существует, возвращается ошибка #REF.
=INDEX(A1:D1,SMALL(IF(NOT(ISBLANK(A1:D1)),COLUMN(A1:D1)-COLUMN(A1)+1,1E+200),2))
Пожалуйста. согласно правилам SO, отвечайте не в комментариях, а в другом ответе. Либо разместите это, либо прокомментируйте в вопросе, если вы в чем-то не уверены.
@Manoj Ваша формула дает ложный результат, если между первым и вторым числом есть пробел.
Вот альтернативный метод с использованием BYROW()
+ CHOOSECOLS()
+ TOCOL()
:
=BYROW(CHOOSECOLS(C2:J8,2,5,8),LAMBDA(α,@TOCOL(α/(α<>""),2,1)))
Формула в ячейке
T3 =INDEX(J3:S3,,1+MATCH(TRUE,ISNUMBER(J3:S3),0))
и клетка
F1 =INDEX(A1:D1,,1+MATCH(TRUE,ISNUMBER(A1:D1),0))
Вот результат. Ошибка выдастся только в том случае, если нет второго числа.
Это должно решить вашу проблему, вы находитесь на правильном пути =XLOOKUP(1,ISNUMBER(C2:J2)*ISNUMBER(SEARCH("margin",$C$1:$J$1)),C2:J2)