У меня есть FormatCondition
. Я читаю .Formula1
и .AppliesTo
Я хочу выяснить, содержит ли формула ссылку на ячейку, которая будет изменяться в диапазоне, указанном в AppliesTo, например, =NOT(ISNUMBER(C3))
в диапазоне C3:D10
.
Из того, что я могу сказать, эта ссылка может быть относительной (например, C3
) или смешанной (например, $C3
или C$3
), но не абсолютной. Это также будет «верхняя левая ячейка в примененном диапазоне» на основе https://www.ablebits.com/office-addins-blog/2014/08/07/relative-absolute-cell-references-excel-conditional-formatting/ и некоторых других сайтов.
Если диапазон похож на C3:D10
, тогда это легко. Найдите верхний левый угол, например, с помощью myRange.Cells(1, 1)
, преобразуйте его в строку, используя .Address
или аналогичную, а затем найдите эту строку в формуле вместе с соответствующими вариантами, добавив $
. Конечно, я должен быть осторожен с такими вещами, как строки (например, верхняя левая ячейка - C3' and formula is
= "CC3NE" `), но это возможно (тем не менее, я бы приветствовал предложения о том, как сделать это лучше, но это не так вопрос).
Реальная проблема заключается в том, что диапазон более сложный, как это часто бывает с условным форматированием. Примером является $CQ$39:$FT$39,$BE$39,$BE$8:$BE$9,$CU$8:$FT$9,$CU$12:$FT$14,$BE$12:$BE$14,$BE$16:$BE$30,$CQ$16:$FT$30,$CQ$32:$FT$36,$BE$32:$BE$36
. .Cells(1, 1)
не дает правильного ответа на это (BE8
, в соответствии с формулой, сделанной в Excel).
Кроме того, что, если диапазон был чем-то вроде $A$5,$E$1
- «слева вверху» нет. Итак, как Excel (или пользователь) решает, что должно быть в формуле?
Таким образом, основной вопрос: Какая система для Excel определяет, какую ячейку использовать в формуле, потому что я не верю, что это «верхний левый» - это может быть «найти самую верхнюю строку, затем найдите там самую левую ячейку », или это может быть наоборот, или что-то совершенно другое.
Второй вопрос: как наилучшим образом найти эту ячейку из заданного диапазона?
Бонусный вопрос (я рад, если здесь не будет ответа): Есть ли хороший способ найти ссылки на эту ячейку в формуле, включая относительные и смешанные версии этой ячейки?
Обратите внимание, что эти странные диапазоны возникают из-за того, что строки и столбцы вырезаются и вставляются на лист с условным форматированием, а Excel в результате обрезает условное форматирование (изменение диапазона и изменение формулы, как без ввода пользователя) ). Таким образом, приоритет заключается в том, чтобы справиться с тем, что Excel будет устанавливать формулу как самостоятельную в таком сценарии, а не обязательно с тем, что может делать пользователь - но обработка обоих будет еще лучше.