
Название действительно полностью выражает то, что я пытаюсь сделать, но оно немного запутанное и непонятное, поэтому я объясню на примере использования:
Если у меня есть книга Excel с двумя листами (ЛистA и ЛистB), которые расположены очень близко друг к другу, и я хочу, чтобы различия визуально выделялись, типичный способ сделать это может быть примерно таким:
- На листе А выделите все ячейки.
- Введите условное форматирование, Новое правило, Использовать формулу
- В поле формулы введите:
=a1<>ЛистB!a1
- примените желаемое форматирование и нажмите «ОК».
По сути, это сравнивает каждую ячейку SheetA с ее аналогом в SheetB, и если они не равны, применить форматирование. Если имена листов сложные (особенно если они содержат пробелы и, следовательно, нуждаются в кавычках), нажатие на имя вкладки во время ввода формулы делает полезные вещи.
Но теперь предположим, чтов некоторой ячейке ЛистаА,Я ввел текстовое выражение, содержащее имя SheetB, и хотел бы сослаться на эту ячейку в формуле условного форматирования выше.
(Почему? У меня может быть 100 электронных таблиц, и я хотел бы сравнить 1 с 2, затем 1 с 3, затем 1 с 55, изменяя текст в ячейке, а не вручную каждый раз изменять условное форматирование.)
Как мне это сделать?
Я знаю, что функция ДВССЫЛ используется для преобразования текста в имена листов, и пробовал несколько вариаций на эту тему, используя функцию ДВССЫЛ как часть формулы условного форматирования, но, похоже, ничего не работает.
решение1
Используйте формулу условного форматирования, например:
= A1 <> INDIRECT(ADDRESS(ROW(A1), COLUMN(A1),,, aSheet), TRUE)
Замените aSheet
ссылкой на ячейку, в которой вы сохранили имя листа для сравнения.
TheADDRESS()
Функция собирает ссылку на ячейку в виде текстовой строки, используя функции ROW()
и COLUMN()
для определения строки и столбца оцениваемой ячейки.
Вы можете пропустить ADDRESS()
функцию и просто создать ссылку на ячейку в формате R1C1 с помощью конкатенации строк, но формула выше, вероятно, более проста для чтения и понимания. Эквивалент будет таким:
= A1 <> INDIRECT(aSheet & "!R" & ROW(A1) & "C" & COLUMN(A1), FALSE)