Подсчет выделенных жирным шрифтом строк в Excel
Обновлено: 21.11.2024
Я пытаюсь подсчитать количество ячеек на рабочем листе,
содержимое которых выделено полужирным шрифтом.
Контекст, в котором я использую это в протоколе стрельбы из лука, где
золото в центре мишени имеет два концентрических круга. Оба имеют
значение 9, но стрелки во внутреннем круге засчитываются, если есть ничья, и
человек с внутренностями тумана становится победителем.
Я использую простой СЧЕТЕСЛИ(E4:G4,"9") для подсчета золотых монет, но у меня возникают проблемы с
подсчетом внутренних золотых монет.
Я решил, что внутренние девятки будут представлены жирным шрифтом,
чтобы это не повлияло на нормальную оценку, но я не могу найти никаких способов
подсчета символов или ячеек, выделенных жирным шрифтом.
/p>
Можете ли вы мне помочь?
Для подсчета выделенных жирным шрифтом ячеек требуется VBA. Вот простой пример
Размытие i As Long
Размытие cLastRow As Long
Размытие cBold As Long
cLastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To cLastRow
If Cells(i, "A"). Font.Bold Then
cBold = cBold + 1
End If
Next i
Range("A1").EntireRow.Insert
Не думаю, что это легко сделать. Один простой способ — написать небольшую
функцию:
Функция CountBold(CellRef As Range)
Dim r As Integer, c As Integer
Для r = 1 To CellRef.Rows.Count
Для c = 1 To CellRef.Columns.Count
Если CellRef.Cells(r, c).Font.Bold Then CountBold = CountBold + 1
Далее c
Далее r
Конец функции
так что =CountBold(A1:C29) будет иметь желаемый эффект
«Шон» написал:
> Уважаемая рабочая группа,
>
> Я пытаюсь подсчитать количество ячеек на рабочем листе, где
> содержание выделено жирным шрифтом.
> Контекст, в котором я использую это в протоколе стрельбы из лука, где
> золото в центре мишени имеет два концентрических круга. Оба имеют
> значение 9, но стрелки во внутреннем круге засчитываются, если есть ничья, и
> человек с внутренностями тумана становится победителем.
>
> Я использую простой СЧЁТЕСЛИ(E4:G4,"9") для подсчёта золотых, но у меня возникают проблемы,
> подсчёт внутренних золотых.
>
> Я решил, что внутренние девятки будут представлены жирным шрифтом,
> чтобы это не повлияло на обычный подсчет очков, но я не могу найти никаких способов
> подсчета символы или ячейки, выделенные жирным шрифтом.
>
> Не могли бы вы мне помочь?
>
На листе: =CountBold(A1:A10)
В VBA напишите эту функцию:
Function CountBold(x as range)
tot=0
для каждого oCell в x
if oCell.font.bold then tot=tot+x.value
Далее
Countbold=tot
Конец функции
Боб Умлас
Excel MVP
KPMG
Технологии обслуживания клиентов
В электронной таблице Excel у меня есть ряд ячеек с числами. Некоторые
числа выделены полужирным шрифтом (представляющие результаты выше среднего по сравнению с другой строкой).
Я хочу подсчитать количество ячеек в строке с жирными цифрами.
Как я могу это сделать?
(Я также проведу обычный подсчет и хочу сравнить результаты.)
Вы используете условное форматирование, чтобы выделить ячейки полужирным шрифтом? Если да, то
вариант указанной там формулы должен их подсчитать.
В электронной таблице Excel у меня есть ряд ячеек с числами. Некоторые
числа выделены полужирным шрифтом (представляющие результаты выше среднего по сравнению с другой строкой).
Я хочу подсчитать количество ячеек в строке с жирными цифрами.
Как я могу это сделать?
(Я также проведу обычный подсчет и хочу сравнить результаты.)
Поместите курсор в ячейку B1 и выберите
Вставить, Имя, Определить
Имя:
Жирный
Ссылается на:
=GET.CELL(20, A1)+0*NOW()
Поскольку вы определили ссылку (без знаков доллара) на ячейку A1,
находясь в ячейке B1, при вызове этой функции Excel всегда будет выглядеть
одной строкой до сделать тест на смелость.
Теперь непосредственно под вашей ячейкой, которую нужно проверить на полужирный шрифт, введите:
=IsBold
и скопируйте это вправо.
Суммируйте эти нули и единицы и получите счет для полужирного шрифта.
Ян Карел Питерс
> ----------
>Я хочу подсчитать количество ячеек в строке, содержащих жирные цифры.
Если у вас активна ячейка B1 во время определения имени, формула ссылается
на ячейку слева, если же у вас активна ячейка A2, формула ссылается
на ячейку непосредственно выше.
Глупый я.
--
С уважением,
Ян Карел Питерс
> Поместите курсор в ячейку B1 и выберите
> Вставить, Имя, Определить
> Имя:
> IsBold
> Относится к:
> = ПОЛУЧАТЬ.CELL(20,A1)+0*NOW()
> Поскольку вы определили ссылку (без знаков доллара) на ячейку A1, в то время как
> стоит на ячейке B1, при вызове этой функции Excel всегда будет выглядеть
> на одну строку вверх, чтобы пройти тест на смелость.
> Теперь непосредственно под вашей ячейкой, чтобы проверить ее на жирность, введите:
> =IsBold
> и скопируйте это вправо.
> Суммируйте эти нули и единицы и получите счет для полужирного шрифта.
> Ян Карел Питерс
> > ----------
> >Я хочу подсчитать количество ячеек в строке, в которых цифры выделены жирным шрифтом.
Питер,
я не совсем понимаю, что имел в виду Боб, поскольку он возвращал сумму значений ячеек,
выделенных полужирным шрифтом, а не количество ячеек. Это будет работать:
Функция CountBold(rng As Range)
Dim lng As Long, rCell As Range
И вы можете назвать это чем-то вроде
чтобы получить количество выделенных полужирным шрифтом ячеек в третьей строке. Это дает вам немного больше
гибкости. Обратите внимание, однако, что он не обновляется с изменением форматирования
(как и предложения Боба и Яна). Чтобы получить последние данные, нажмите
command-shift-F9 на Mac; извините, я не помню эквивалент Wintel, но
похож.
Что касается предложения Яна (исправленного), вам не нужен вызов "СЕЙЧАС". Лично я
выбрал бы решение VBA, но это, очевидно, зависит от вас.
Дэйв Брейден
TMY Research
> В электронной таблице Excel у меня есть ряд ячеек с числами. Некоторые числа
> выделены жирным шрифтом (что означает результаты выше среднего по сравнению с другой
> строкой).
> Я хочу подсчитать количество ячеек в строке с жирными цифрами.
> Как я могу это сделать?
> (Я также проведу обычный подсчет и хочу сравнить результаты.)
Вы указали: "количество ячеек в строке, выделенных жирным шрифтом". Таким образом, проверка
должна проводиться для ячеек, выделенных жирным шрифтом и числовыми. Никто из нас не тестировался на это.
Изменить то, что я отправил
Функция CountBoldNum(rng As Range)
Dim lng As Long, rCell As Range
Приносим извинения за оплошность. Кстати, IsNumaric преобразует числа в строках в
числа: "123" -> 123.
Если вам нужно более жесткое ограничение, а именно, чтобы значение в ячейке было
строго числовым, а не строковое представление числа, а затем вместо этого используйте
Application.IsNumber.
> Питер,
> Я не уверен, что имел в виду Боб, поскольку он возвращал сумму значений ячеек, которые
> были выделены полужирным шрифтом, а не количество ячеек. Это будет работать:
> Function CountBold(rng As Range)
> Dim lng As Long, rCell As Range
> И вы можете назвать это чем-то вроде
> чтобы получить количество выделенных полужирным шрифтом ячеек в третьей строке. Это дает вам немного больше
> гибкости. Однако обратите внимание, что он не обновляется при изменении форматирования
> (как и предложения Боба и Яна). Чтобы получить последний счетчик, нажмите
> command-shift-F9 на Mac; извините, я не помню аналог Wintel, но он
> похож.
> Что касается (исправленного) предложения Яна, вам не нужен вызов «СЕЙЧАС». Лично я бы
> выбрал решение VBA, но это, очевидно, зависит от вас.
> Дэйв Брейден
> Исследование TMY
> > В электронной таблице Excel у меня есть ряд ячеек с числами. Некоторые из
> > чисел выделены жирным шрифтом (что означает результаты выше среднего по сравнению с другой
> > строкой).
> > Я хочу подсчитать количество ячеек в строке, в которых цифры выделены жирным шрифтом.
> > Как мне это сделать?
>> (Я также проведу обычный подсчет и хочу сравнить результаты.)
Питер,
Это тот случай, когда вы действительно хотите подсчитать количество ячеек в строке, которые
выделены жирным шрифтом, или вам просто нужно знать количество ячеек в строке, которые имеют < br />значения больше, чем в другой строке? Если второе, то решение простое:
выдает количество значений в A15:C15, которые строго больше, чем
соответствующие значения в строке 16.
Пожалуйста, дайте нам знать, что вы на самом деле имеете в виду. Спасибо,
> В электронной таблице Excel у меня есть ряд ячеек с числами. Некоторые числа
> выделены жирным шрифтом (что означает результаты выше среднего по сравнению с другой
> строкой).
> Я хочу подсчитать количество ячеек в строке с жирными цифрами.
> Как я могу это сделать?
> (Я также проведу обычный подсчет и хочу сравнить результаты.)
Меня спросили, есть ли способ подсчитать все выделенные жирным шрифтом ячейки в диапазоне. Конечно, есть. Вот простая функция VBA, которая выполняет эту задачу:
Эта функция может быть вызвана несколькими способами. Вот два примера, показывающих, как вызывать функцию из других процедур VBA.
Вы даже можете вызвать его из ячейки листа, используя этот синтаксис.
Поделиться:
Опубликовано: четверг, 16 октября 2008 г., раздел VBA.
Теги: UDF, определяемые пользователем функции, VBA.
Комментариев: 17
Взаимодействие с читателем
Комментарии
Говорит Стефан Нольф
Хорошая маленькая функция.
Однако, если я не ошибаюсь, стоит упомянуть, что функция не будет обновляться сама по себе, если используется на листе.
Я думаю, что это относится ко всем функциям, которые возвращают значение на основе макета.
Может быть, вы знаете обходной путь?
Это правда. Вы можете заставить функцию пересчитывать каждый раз, когда рабочий лист вычисляет, вставив одну строку в функцию:
Джон. Это очень полезно. Другой полезной функцией может быть перечисление/подсчет количества ячеек, отмеченных определенным цветом.
Не могу передать, сколько раз люди спрашивали меня, могут ли они каким-то образом выделить ячейки, окрашенные красным (или каким-либо другим цветом) в электронной таблице :-) Часто люди «думают», что выделение ячеек в Красный цвет — хороший способ показать кому-то, какие конкретные точки нужно выбрать для дальнейшего анализа, и в конечном итоге это все усложнит (в отличие от простого использования пустого столбца для отметки этих точек значением "Да/Нет").
Я не уверен, что это можно сделать, но не могли бы вы написать формулу массива, чтобы отделить цветные ячейки от заданного диапазона и пометить их определенным цветом?
Это, безусловно, можно сделать. На самом деле, я считаю, что это функция ASAP Utilities, невероятно всеобъемлющего набора инструментов для работы в Excel.
Я заметил, что этот вопрос часто задают, и обычно это относится к похожему решению UDF. Мне часто приходится подсчитывать/суммировать на основе примененного форматирования, но я склонен ссылаться на макросы Excel 4.0. В частности, я обычно использую функцию GET.CELL в именованном диапазоне уровня рабочей книги.
Например: CellColor = GET.CELL(63,A1)
…А затем используйте СУММЕСЛИ/СЧЁТЕСЛИ
Интересно, почему, по вашему мнению, наиболее часто используемым решением является VBA? У меня сложилось впечатление, что макросы Excel 4.0 не очень нравятся в сообществе гуру Excel. Как вы относитесь к макрофункциям Excel 4.0?
Начиная с Excel 5/95, Microsoft пытается отказаться от поддержки XLM. Не могут по двум причинам. 1 — многие бизнес-решения были написаны на XLM, и компании скорее отказались бы от обновления, чем переписали бы их на VBA. 2 — с помощью XLM можно сделать определенное количество вещей, которые невозможны в VBA. Пока Microsoft не решит эти два вопроса, им придется поддерживать XLM.
Однако усилия Microsoft по уменьшению роли XLM увенчались успехом, поскольку те немногие, кто использовал Excel в версии Excel 5/95 или после нее, познакомились с XLM. Те из нас, кто изучал XLM до VBA, забыли большую часть XLM, который мы когда-либо знали.
Если бы функции Get.Cell XLM можно было включить в библиотеку функций листа Excel, это значительно помогло бы сделать XLM ненужным.
Я добавил строку записи в ячейку рабочего листа и делаю что-то не так. Я получаю сообщение об ошибке
Не знаю, почему это не работает
Говорит Дипак Наяк
Пробовал часть Application.Volatile, но значения на листе не стали динамическими.
-=-=-=-=-=-=-=-=-=-=-
Функция CountBoldCellsInRange(rng As Range) As Long
Application.Volatile
Затемнение rCell As Range
Затемнение iBold As Long
iBold = 0
Для каждой rCell в rng
If rCell.Font.Bold Then
iBold = iBold + 1
End If
Next
CountBoldCellsInRange = iBold
End Function
-=-=-=-=-=-=-=-=-=-=-
Что я здесь делаю неправильно? р>
Application.Volatile вызывает вычисление пользовательской функции при каждом пересчете листа. В этой формуле это не обязательно, поскольку любое изменение или вычисление в ячейках, на которые ссылается формула, в любом случае вызовет пересчет пользовательской функции. Однако изменение формата не вызывает перерасчета, поэтому вычисленное значение не изменится, если все, что вы делаете, это нажимаете кнопки или используете диалоговое окно для изменения форматирования. Вам нужно изменить значение или пересчитать лист, чтобы обновить результат формулы.
Я перешел по вашей ссылке о том, как использовать чужой макрос, но на самом деле это не применимо, так как это функция.
Вот что я делаю:
Мы будем очень признательны за любую помощь.
Я использую Excel 2007, если это уместно.
Хорошо, понял. Очевидно, что Excel не будет запускать пользовательские функции, если вы не включите макросы и немного не поиграете с безопасностью. Я покончил с этим, и это работает.
Однако функция правильно подсчитывает ячейки, если они выделены жирным шрифтом.
Но если у меня установлено условное форматирование, которое выделяет определенную ячейку ЖИРНЫМ шрифтом, поскольку она соответствует некоторым критериям, эта ячейка НЕ будет учитываться этой функцией.
Форматирование, распознаваемое VBA, — это форматирование, применяемое к ячейке при отсутствии включенного условного форматирования. Можно написать свою функцию так, чтобы она также проверяла условие и возвращала форматирование для этого условия. Вы можете либо жестко запрограммировать это, либо написать код для проверки условий для каждой ячейки и определения применимых, а затем извлечь форматирование и подсчитать ячейки.
Я сделал это сложным? Это еще сложнее. Хотел бы я сказать вам другое.
а как насчет запроса, который выполняется каждую секунду для подсчета отформатированного материала?
Это сработает?
Анон, мне бы не хотелось так загружать процессор.
Спасибо за это, это очень полезный инструмент. Однако при попытке сделать это я получаю сообщение об ошибке. В окне VBA он выделяет первое «затемнение» в функции и говорит:
«Ошибка компиляции:
Ожидается: конец оператора»
Не могли бы вы сказать мне, что это значит и как починить это? Заранее спасибо.
Кроме того, я должен добавить, что совершенно не понимаю, что делаю.
Убедитесь, что вы не скопировали непечатаемые символы. Попробуйте удалить строку и ввести ее заново.
Оставить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Я постоянно получаю этот запрос. У людей огромные наборы данных, и кто-то из их команды выделил некоторые записи, отформатировав их жирным шрифтом.
Теперь вы тот, кто получает эти данные, и вам нужно отфильтровать все записи, выделенные полужирным шрифтом.
Например, предположим, что у вас есть набор данных, как показано ниже, и вы хотите отфильтровать все ячейки, выделенные полужирным шрифтом.
Нет простого способа сделать это.
Вы не можете просто использовать фильтр Excel, чтобы получить все ячейки, выделенные жирным шрифтом. Но это не значит, что вам нужно тратить часы и делать это вручную.
В этом руководстве я покажу вам три способа фильтрации ячеек с форматированием полужирным шрифтом в Excel:
<Р>