Читатель из Чешской Республики спросил о создании диаграммы в ячейках, чтобы проиллюстрировать проценты.
Если значение в ячейке было 37%, как я могу заполнить 37% ячейки снизу цветом?

Мала Сингх из нашего графического подразделения придумала это интересное решение для достижения желаемого эффекта. Мала построил рабочий лист, в котором каждая строка фактически состоит из двух объединенных строк. Ячейки B2 и B3 объединены в одну ячейку. Когда значение в B2 изменяется, фрагмент кода VBA на панели рабочего листа автоматически регулирует высоту строки 2 и строки 3. Ячейка C3 окрашена в синий цвет, а ячейка C2 - в белый. В результате появляется столбец C для отображения столбчатой диаграммы в ячейке. На этом изображении показана синяя полоса разной высоты в ячейках с C2 по C13.

Первый шаг - объединить ячейки B2 и B3 в одну ячейку. Вы выберете ячейки B2 и B3. В меню выберите Формат, Ячейки. Перейдите на вкладку «Выравнивание». Установите флажок Объединить ячейки. Это заставит B2 и B3 действовать как одна ячейка с именем B2.
Оставьте ячейку C2 без заливки и используйте любую цветовую заливку для ячейки C3.
Код для этой техники не помещается в обычный модуль. Это код «обработчика событий», который должен быть помещен в модуль кода для этого конкретного рабочего листа. Прочтите статью «Макрос события для добавления пути и имени файла в заголовок Excel», чтобы наглядно узнать, как открыть модуль кода для рабочего листа.
Введите следующий код в модуль кода для Sheet1 (или любого другого листа, с которым вы работаете).
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target.Cells If cell.Column = 2 And cell.Row> 1 Then If cell.Value> 1 Or cell.Value < 0 Then cell.Select MsgBox ("Value must be between 0 and 100%") End If If IsEmpty(cell) Or cell.Value = 0 Then cell.Range("B1:B2").RowHeight = 25 'cell.Range("B2").Interior.ColorIndex = xlNone Else On Error Resume Next cell.Range("B1").RowHeight = 50 * (1 - cell.Value) With cell.Range("B2") .RowHeight = 50 * cell.Value '.Interior.Color = RGB(0, 0, 255) On Error GoTo 0 End With End If End If Next End Sub
Вы можете повторить процесс объединения пар ячеек в столбце B.
Спасибо Mala Singh за это решение. Mala может разработать индивидуальные решения для построения графиков для удовлетворения любых потребностей. Он участвовал в написании главы о диаграммах в VBA и макросах для Excel.