Лично я стараюсь избегать использования функции OFFSET
, потому что она нестабильна, но в этом случае это не должно иметь значения, поскольку целью OP является использование Conditional Formatting
.
Имейте в виду, что значение ячейки не может быть изменено с помощью Conditional Formatting
.
Предполагая, что данные начинаются с A2
, введите эту формулу в B2
и скопируйте до последней строки с данными:
Использование функции CONCAT
:
= IF( ROWS( $2:2 ) <= 2, T( $A2 ),
IF( AND( SUM( B1 ) > 0, SUM( B1 ) < 10 ), SUM( 1, B1 ),
IF( "LL" <> RIGHT( CONCAT( OFFSET( B2, -1, 0,
- IF( ROWS( 1:$2 ) > 10, 10, ROWS( 1:$2 ) ) ) ), 2 ), T( $A2 ), 1 ) ) )
Использование функции TEXTJOIN
:
= IF( ROWS( $2:2 ) <= 2, T( $A2 ),
IF( AND( SUM( B1 ) > 0, SUM( B1 ) < 10 ), SUM( 1, B1 ),
IF( "LL" <> RIGHT( TEXTJOIN( "", 1, OFFSET( B2, -1, 0,
- IF( ROWS( 1:$2 ) > 10, 10, ROWS( 1:$2 ) ) ) ), 2 ), T( $A2 ), 1 ) ) )
Приведенная выше формула генерирует счетчик от 1 до 10 после нахождения комбинации «LL». Затем вы должны добавить Conditional Formatting
, чтобы применить тот же цвет к шрифту и интерьеру, когда выполнены следующие критерии:
= ISNUMBER( B2 )
Шрифт и цвет интерьера различаются для отображения значений формул.
Функция OFFSET
используется для установки диапазона 10 строк над ячейкой, который будет оцениваться условным форматом. Обратите внимание, что диапазон создается с использованием уже оцененных значений, а не исходных значений (т. Е. Используйте столбец B
вместо A
)
OFFSET( A2, -1, 1,
- IF( ROWS( B1:B$2 ) > 10, 10, ROWS( B1:B$2 ) ) )
Эта часть позволяет избежать ненужных сравнений. :
IF( ROWS( B1:B$2 ) < 3, T( A2 ), … )
Использование функции T
позволяет избежать значения zero
, когда ячейка пуста:
T( A2 )
Эта часть инициирует и завершает счетчик:
IF( AND( SUM( B1 ) > 0, SUM( B1 ) < 10 ), SUM( 1, B1 ), …
Функция TEXTJOIN
объединяет диапазон, генерируемый функцией OFFSET
.
РЕДАКТИРОВАТЬ: ПЕРЕСМОТРЕННЫЕ ФОРМУЛЫ
Вы также можете попробовать следующее Нет летучих Формулы:
Использование функции CONCAT
:
= IF( ROWS( $2:2 ) <= 2, T( $A2 ),
IF( AND( SUM( B1 ) > 0, SUM( B1 ) < 10 ), SUM( 1, B1 ),
IF( "LL" <> RIGHT( CONCAT( B1 : INDEX( B:B,
ROW() - IF( -1 + ROWS( $2:2 ) > 10, 10, -1 + ROWS( $2:2 ) ) ) ), 2 ), T( $A2 ), 1 ) ) )
Использование функции TEXTJOIN
:
= IF( ROWS( $2:2 ) <= 2, T( $A2 ),
IF( AND( SUM( B1 ) > 0, SUM( B1 ) < 10 ), SUM( 1, B1 ),
IF( "LL" <> RIGHT( TEXTJOIN( "", 1, B1:INDEX( B:B,
ROW() - IF( -1 + ROWS( $2:2 ) > 10, 10, -1 + ROWS( $2:2 ) ) ) ), 2 ), T( $A2 ), 1 ) ) )
Использование функции CONCATENATE
:
= IF( ROWS( $2:2 ) <= 2, T( $A2 ),
IF( AND( SUM( B1 ) > 0, SUM( B1 ) < 10 ), SUM( 1, B1 ),
IF( "LL" <> RIGHT( CHOOSE( IF( ROWS( 2:$4 ) > 10, 10, ROWS( 2:$4 ) ),
CONCATENATE( B$2, B$3 ),
CONCATENATE( B$2, B$3, B$4 ),
CONCATENATE( B$2, B$3, B$4, B$5 ),
CONCATENATE( B$2, B$3, B$4, B$5, B$6 ),
CONCATENATE( B$2, B$3, B$4, B$5, B$6, B$7 ),
CONCATENATE( B$2, B$3, B$4, B$5, B$6, B$7, B$8 ),
CONCATENATE( B$2, B$3, B$4, B$5, B$6, B$7, B$8, B$9 ),
CONCATENATE( B$2, B$3, B$4, B$5, B$6, B$7, B$8, B$9, B$10 ),
CONCATENATE( B$2, B$3, B$4, B$5, B$6, B$7, B$8, B$9, B$10, B$11 ),
CONCATENATE( INDEX(B:B,ROW()-10),
INDEX(B:B,ROW()-9), INDEX(B:B,ROW()-8), INDEX(B:B,ROW()-7),
INDEX(B:B,ROW()-6), INDEX(B:B,ROW()-5), INDEX(B:B,ROW()-4),
INDEX(B:B,ROW()-3), INDEX(B:B,ROW()-2), INDEX(B:B,ROW()-1) ) ), 2 ), T( $A2 ), 1 ) ) )