Как вернуть текст, а не только числа с массивами в Excel

Вчера мне посчастливилось получить помощь по вопросу (Как работать с IF/IFS/ISBLANK, когда столбцы содержат строки нулевой длины), на что были получены следующие ответы:

=BYROW(CA6:CC13; LAMBDA(a; INDEX(a; XMATCH(TRUE; ISNUMBER(1/a); 0; -1))))

=BYROW(CA6:CC13; LAMBDA(a; XLOOKUP(TRUE; ISNUMBER(1/a); a; ; 0; -1)))

=IF(1-ISERR(1/CC6:CC13); CC6:CC13; IF(1-ISERR(1/CB6:CB13); CB6:CB13; CA6:CA13))

Все функции отлично справляются со своими задачами. Однако теперь мне нужна помощь в изменении этих (или только одного из них), чтобы функция возвращала не только числа, но и текст.

Для проверки качества книги мне не разрешено использовать VBA.

Вот как должна выглядеть функция в столбце CD:

Функция, предоставленная Маюхом Бхаттачарьей, почти работает. Но эта функция возвращает текст только из последнего столбца (CA).

Я попытался переписать функцию следующим образом:
=IF(ISNUMBER(1/BK6:BK12), BK6:BK12, IF(ISNUMBER(1/BJ6:BJ12), BJ6:BJ12, BI6:BI12))

Еще пробовал это:
=IF(OR(ISNUMBER(1/CC6:CC13), ISTEXT(CC6:CC13)), IFERROR(CC6:CC13, ""), IF(OR(ISNUMBER(1/CB6:CB13), ISTEXT(CB6:CB13)), IFERROR(CB6:CB13, ""), CA6:CA13))

Что именно означает For the purpose of quality check of the workbook, I am not allowed to use VBA? Должно быть возможно с помощью только формул. Столбец D — желаемый результат?

Excellor 24.04.2024 09:27
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
1
64
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Кажется, вы просто хотите вернуть последнюю непустую ячейку каждой строки. Пытаться-

=BYROW(A2:E9,LAMBDA(rw,TAKE(FILTER(rw,rw<>""),,-1)))

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

Это работает для меня:


=LET(_Fx, LAMBDA(α, (1-ISERR(1/α))+(ISTEXT(α))),
           IF(_Fx(CC6:CC13),CC6:CC13,IF(_Fx(CB6:CB13),CB6:CB13,IF(_Fx(CA6:CA13),CA6:CA13))))

Обновленные версии вышеперечисленного:


=LET(
     _Fx, LAMBDA(α, (1-ISERR(1/α))+(ISTEXT(α)*(α<>""))),
     IFS(_Fx(CC6#), CC6#, _Fx(CB6#), CB6#, _Fx(CA6#), CA6#))

И этот может быть короче, я думаю:


=BYROW(CA6:CC21,LAMBDA(α,LOOKUP(2,1/((α<>"")*(α<>0)),α)))

Этот сделал это для меня, объединив оба сообщения:

==IF(ISTEXT(CC6:CC20);CC6:CC20;IF(BITAND(LEN(CC6:CC20)>0;CC6:CC20>0);CC6:CC20;IF(ISTEXT(CB6:CB20);CB6:CB20;IF(BITAND(LEN(CB6:CB20)>0;CB6:CB20>0);CB6:CB20;CA6:CA20))))

Но кажется немного перебором

=BYROW(CA6:CC13; LAMBDA(r; TAKE(FILTER(r; r <> 0); ; -1)))   

или с запятыми

=BYROW(CA6:CC13, LAMBDA(r,TAKE(FILTER(r, r <> 0), , -1)))

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

Похожие вопросы