Определение полужирного шрифта в ячейке (Microsoft Excel)
Кен задается вопросом, есть ли функция рабочего листа, которая укажет, выделено ли содержимое ячейки жирным шрифтом. Он может найти другие информационные функции, такие как ISBLANK, но не может найти ту, которая укажет, выделена ли ячейка жирным шрифтом.
В Excel нет встроенной функции ISBOLD. Есть очень хитрый способ сделать это, не прибегая к макросу, но он работает только с некоторыми версиями Excel. По-видимому, например, этот подход не будет работать с Office 365, поскольку похоже, что Microsoft окончательно удалила его поддержку. Эта старая функция Excel 4, называемая GET.CELL, будет работать с некоторыми более старыми версиями Excel. Вот как вы использовали бы его в формуле:
=IF(GET.CELL(20,A1), "Bold", "Not Bold")
Функция GET.CELL возвращает True, если хотя бы первый символ в ячейке выделен жирным шрифтом.
Лучшим подходом было бы создание определяемой пользователем функции в VBA, которую можно было бы вызывать из вашего рабочего листа. Вот простая версия такого UDF:
Function CheckBold(cell As Range) As Boolean Application.Volatile CheckBold = cell.Font.Bold End Function
Чтобы использовать его на своем листе, вы должны сделать это следующим образом:
=IF(CheckBold(A1), "Bold", "Not Bold")
Функция CheckBold будет обновляться только при пересчете вашего листа, а не в том случае, если вы просто примените полужирное форматирование к ячейке A1 или удалите его из ячейки.
Этот подход может работать в большинстве случаев, но следует понимать, что свойство Bold может иметь три возможных значения: True, False и Null. Для свойства установлено значение False, если ни один из символов в ячейке не выделен жирным шрифтом. Для него установлено значение True, если все они выделены жирным шрифтом. Наконец, устанавливается значение Null, если только некоторые символы в ячейке выделены жирным шрифтом. Если вы думаете, что можете столкнуться с такой ситуацией, вам нужно изменить функцию CheckBold:
Function CheckBold(cell As Range) As Integer Dim iBold As Integer Application.Volatile iBold = 0 If IsNull(cell.Font.Bold) Then iBold = 2 Else If cell.Font.Bold Then iBold = 1 End If CheckBold = iBold End Function
Обратите внимание, что функция теперь возвращает значение от 0 до 2. Если она возвращает 0, в ячейке нет жирного шрифта. Если возвращается 1, жирным шрифтом выделяется вся ячейка. Если возвращается 2, значит в ячейке есть частичный жирный шрифт.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13733) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.