Vba excel изменить формат ячеек - IT Справочник
Llscompany.ru

IT Справочник
22 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel изменить формат ячеек

Чтение и запись значения ячейки в VBA

В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.

Обращение к конкретной ячейке

Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.

Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:

  • С помощью Range
  • С помощью Cells

Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1

Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:

Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе

Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).

Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.

Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.

Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.

Чтение значения из ячейки

Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:

  • Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
  • Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
  • Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».

По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.

Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.

Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.

При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.

Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.

Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.

Запись значения в ячейку

Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.

Пример 8: Записать в ячейку A1 активного листа значение 123,45

Все три строки запишут в A1 одно и то же значение.

Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года

В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.

Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.

Как в Excel изменять цвет строки в зависимости от значения в ячейке

Узнайте, как на листах Excel быстро изменять цвет целой строки в зависимости от значения одной ячейки. Посмотрите приёмы и примеры формул для числовых и текстовых значений.

В одной из предыдущих статей мы обсуждали, как изменять цвет ячейки в зависимости от её значения. На этот раз мы расскажем о том, как в Excel 2010 и 2013 выделять цветом строку целиком в зависимости от значения одной ячейки, а также раскроем несколько хитростей и покажем примеры формул для работы с числовыми и текстовыми значениями.

Читать еще:  Как добавить вкладку разработчик в excel

Как изменить цвет строки на основании числового значения одной из ячеек

Предположим, у нас есть вот такая таблица заказов компании:

Мы хотим раскрасить различными цветами строки в зависимости от заказанного количества товара (значение в столбце Qty.), чтобы выделить самые важные заказы. Справиться с этой задачей нам поможет инструмент Excel – «Условное форматирование».

  1. Первым делом, выделим все ячейки, цвет заливки которых мы хотим изменить.
  2. Чтобы создать новое правило форматирования, нажимаем Главная >Условное форматирование >Создать правило (Home > Conditional Formatting > New rule).
  3. В появившемся диалоговом окне Создание правила форматирования (New Formatting Rule) выбираем вариант Использовать формулу для определения форматируемых ячеек (Use a formula to determine which cells to format), и ниже, в поле Форматировать значения, для которых следующая формула является истинной (Format values where this formula is true), вводим такое выражение:

Вместо C2 Вы можете ввести ссылку на другую ячейку Вашей таблицы, значение которой нужно использовать для проверки условия, а вместо 4 можете указать любое нужное число. Разумеется, в зависимости от поставленной задачи, Вы можете использовать операторы сравнения меньше ( =$C2
=$C2=4

Обратите внимание на знак доллара $ перед адресом ячейки – он нужен для того, чтобы при копировании формулы в остальные ячейки строки сохранить букву столбца неизменной. Собственно, в этом кроется секрет фокуса, именно поэтому форматирование целой строки изменяется в зависимости от значения одной заданной ячейки.

  • Нажимаем кнопку Формат (Format) и переходим на вкладку Заливка (Fill), чтобы выбрать цвет фона ячеек. Если стандартных цветов недостаточно, нажмите кнопку Другие цвета (More Colors), выберите подходящий и дважды нажмите ОК.Таким же образом на остальных вкладках диалогового окна Формат ячеек (Format Cells) настраиваются другие параметры форматирования, такие как цвет шрифта или границы ячеек.
  • В поле Образец (Preview) показан результат выполнения созданного правила условного форматирования:
  • Если всё получилось так, как было задумано, и выбранный цвет устраивает, то жмём ОК, чтобы увидеть созданное правило в действии.Теперь, если значение в столбце Qty. больше 4, то соответствующая строка таблицы целиком станет голубой.
  • Как видите, изменять в Excel цвет целой строки на основании числового значения одной из ячеек – это совсем не сложно. Далее мы рассмотрим ещё несколько примеров формул и парочку хитростей для решения более сложных задач.

    Как создать несколько правил условного форматирования с заданным приоритетом

    В таблице из предыдущего примера, вероятно, было бы удобнее использовать разные цвета заливки, чтобы выделить строки, содержащие в столбце Qty. различные значения. К примеру, создать ещё одно правило условного форматирования для строк, содержащих значение 10 или больше, и выделить их розовым цветом. Для этого нам понадобится формула:

    Для того, чтобы оба созданных нами правила работали одновременно, нужно расставить их в нужном приоритете.

    1. На вкладке Главная (Home) в разделе Стили (Styles) нажмите Условное форматирование (Conditional Formatting) >Управление правилами (Manage Rules)
    2. В выпадающем списке Показать правила форматирования для (Show formatting rules for) выберите Этот лист (This worksheet). Если нужно изменить параметры только для правил на выделенном фрагменте, выберите вариант Текущий фрагмент (Current Selection).
    3. Выберите правило форматирования, которое должно быть применено первым, и при помощи стрелок переместите его вверх списка. Должно получиться вот так:Нажмите ОК, и строки в указанном фрагменте тут же изменят цвет, в соответствии с формулами в обоих правилах.

    Как изменить цвет строки на основании текстового значения одной из ячеек

    Чтобы упростить контроль выполнения заказа, мы можем выделить в нашей таблице различными цветами строки заказов с разным статусом доставки, информация о котором содержится в столбце Delivery:

    • Если срок доставки заказа находится в будущем (значение Due in X Days), то заливка таких ячеек должна быть оранжевой;
    • Если заказ доставлен (значение Delivered), то заливка таких ячеек должна быть зелёной;
    • Если срок доставки заказа находится в прошлом (значение Past Due), то заливка таких ячеек должна быть красной.

    И, конечно же, цвет заливки ячеек должен изменяться, если изменяется статус заказа.

    С формулой для значений Delivered и Past Due всё понятно, она будет аналогичной формуле из нашего первого примера:

    =$E2=»Delivered»
    =$E2=»Past Due»

    Сложнее звучит задача для заказов, которые должны быть доставлены через Х дней (значение Due in X Days). Мы видим, что срок доставки для различных заказов составляет 1, 3, 5 или более дней, а это значит, что приведённая выше формула здесь не применима, так как она нацелена на точное значение.

    В данном случае удобно использовать функцию ПОИСК (SEARCH) и для нахождения частичного совпадения записать вот такую формулу:

    =ПОИСК(«Due in»;$E2)>0
    =SEARCH(«Due in»,$E2)>0

    В данной формуле E2 – это адрес ячейки, на основании значения которой мы применим правило условного форматирования; знак доллара $ нужен для того, чтобы применить формулу к целой строке; условие “>0” означает, что правило форматирования будет применено, если заданный текст (в нашем случае это “Due in”) будет найден.

    Подсказка: Если в формуле используется условие “>0“, то строка будет выделена цветом в каждом случае, когда в ключевой ячейке будет найден заданный текст, вне зависимости от того, где именно в ячейке он находится. В примере таблицы на рисунке ниже столбец Delivery (столбец F) может содержать текст “Urgent, Due in 6 Hours” (что в переводе означает – Срочно, доставить в течение 6 часов), и эта строка также будет окрашена.

    Для того, чтобы выделить цветом те строки, в которых содержимое ключевой ячейки начинается с заданного текста или символов, формулу нужно записать в таком виде:

    =ПОИСК(«Due in»;$E2)=1
    =SEARCH(«Due in»,$E2)=1

    Нужно быть очень внимательным при использовании такой формулы и проверить, нет ли в ячейках ключевого столбца данных, начинающихся с пробела. Иначе можно долго ломать голову, пытаясь понять, почему же формула не работает.

    Итак, выполнив те же шаги, что и в первом примере, мы создали три правила форматирования, и наша таблица стала выглядеть вот так:

    Как изменить цвет ячейки на основании значения другой ячейки

    На самом деле, это частный случай задачи об изменении цвета строки. Вместо целой таблицы выделяем столбец или диапазон, в котором нужно изменить цвет ячеек, и используем формулы, описанные выше.

    Например, мы можем настроить три наших правила таким образом, чтобы выделять цветом только ячейки, содержащие номер заказа (столбец Order number) на основании значения другой ячейки этой строки (используем значения из столбца Delivery).

    Как задать несколько условий для изменения цвета строки

    Если нужно выделить строки одним и тем же цветом при появлении одного из нескольких различных значений, то вместо создания нескольких правил форматирования можно использовать функции И (AND), ИЛИ (OR) и объединить таким образом нескольких условий в одном правиле.

    Например, мы можем отметить заказы, ожидаемые в течение 1 и 3 дней, розовым цветом, а те, которые будут выполнены в течение 5 и 7 дней, жёлтым цветом. Формулы будут выглядеть так:

    =ИЛИ($F2=»Due in 1 Days»;$F2=»Due in 3 Days»)
    =OR($F2=»Due in 1 Days»,$F2=»Due in 3 Days»)

    =ИЛИ($F2=»Due in 5 Days»;$F2=»Due in 7 Days»)
    =OR($F2=»Due in 5 Days»,$F2=»Due in 7 Days»)

    Для того, чтобы выделить заказы с количеством товара не менее 5, но не более 10 (значение в столбце Qty.), запишем формулу с функцией И (AND):

    Конечно же, в своих формулах Вы можете использовать не обязательно два, а столько условий, сколько требуется. Например:

    =ИЛИ($F2=»Due in 1 Days»;$F2=»Due in 3 Days»;$F2=»Due in 5 Days»)
    =OR($F2=»Due in 1 Days»,$F2=»Due in 3 Days»,$F2=»Due in 5 Days»)

    Подсказка: Теперь, когда Вы научились раскрашивать ячейки в разные цвета, в зависимости от содержащихся в них значений, возможно, Вы захотите узнать, сколько ячеек выделено определённым цветом, и посчитать сумму значений в этих ячейках. Хочу порадовать Вас, это действие тоже можно сделать автоматически, и решение этой задачи мы покажем в статье, посвящённой вопросу Как в Excel посчитать количество, сумму и настроить фильтр для ячеек определённого цвета.

    Мы показали лишь несколько из возможных способов сделать таблицу похожей на полосатую зебру, окраска которой зависит от значений в ячейках и умеет меняться вместе с изменением этих значений. Если Вы ищите для своих данных что-то другое, дайте нам знать, и вместе мы обязательно что-нибудь придумаем.

    Пользовательский формат числа в Excel

    Excel предоставляет достаточно много встроенных числовых форматов, однако возможны ситуации, в которых ни один вам не подойдет. В таком случае попробуйте создать собственный (пользовательский) числовой формат. [1] Для этого, находясь в ячейке, кликните правой кнопкой мыши, и в контекстном меню выберите Формат ячеек. Откроется диалоговое окно Формат ячеек (рис. 1). Перейдите на вкладку Число. Окно Формат ячеек также можно вызвать, нажав сочетание Ctrl+1 или с помощью ленты (меню Главная), щелкнув на стрелке в правом нижнем углу группы Число (рис. 2).

    Рис. 1. Окно Формат ячеек

    Скачать заметку в формате Word или pdf, скачать примеры в формате Excel

    Рис. 2. Вызов окна Формат ячеек с помощью ленты

    Некоторые пользователи Excel стараются обходиться без создания собственных числовых форматов, так как считают этот процесс слишком трудоемким. На самом деле сложность пользовательских числовых форматов сильно преувеличена.

    Для создания числового формата нужно указать серию кодов как строку числового формата. Чтобы создать пользовательский числовой формат, выполните всего три действия:

    1. Нажмите Ctrl+1, чтобы открыть диалоговое окно Формат ячеек.
    2. Щелкните на вкладке Число и выберите на ней категорию (все форматы).
    3. Введите ваш собственный формат в поле Тип.

    Вот здесь и возникают некоторые сложности, поскольку требуют от вас знания кодировки форматов в Excel. Но… Во-первых, эту кодировку несложно освоить по аналогии. Для этого, просто посмотрите, как кодируются стандартные форматы. Во-вторых, синтаксис кодов не так уж и сложен, что я надеюсь показать вам в настоящей заметке. И, наконец, освоив кодировку, вы почувствуете, что перешли на новую ступень владения Excel!

    Разделы кода формата

    Числовые форматы могут иметь до четырех разделов кода, разделенных точкой с запятой. Эти разделы определяют формат положительных, отрицательных, нулевых значений и текста. Причем, именно в таком порядке. Почему пользователи редко замечают столь сложную структуру формата? Дело в том, что большинство стандартных форматов содержат только один раздел – для отображения любого содержания. Это означает, что отрицательные числа или текст будут отражаться в том же формате, что и положительные числа. Например, если вы введете в разные ячейки положительное, отрицательное число, ноль и текст, то Excel применит формат по умолчанию – Общий (рис. 3).

    Рис. 3. Формат Общий

    Тем не менее, не все стандартные форматы имеют один раздел. Например, выбрав формат числовой и четвертый тип (нижний), вы «покрасите» отрицательные числа в красный цвет (рис. 4).

    Рис. 4. Формат Числовой, тип четвертый: отрицательные числа – красным цветом

    Чтобы увидеть, как Excel кодирует тот или иной стандартный формат, сначала выберите этот формат (например, как на рис. 4), а затем кликните на (все форматы). В области Тип, вы увидите, что формат содержит два раздела, разделенные точкой с запятой (рис. 5). Не пугайтесь, что большинство символов кода вам пока не понятны. Вскоре вы узнаете, что они обозначают. Сейчас же обратите внимание только на то, что формат содержит два раздела:

    Первый – для положительных чисел, второй – для отрицательных. Символом ˽ я обозначаю пробел.

    Рис. 5. Кодировка формата, использованного на рис. 4

    Ну что ж, пришло время создать ваш первый пользовательский формат. Допустим вы хотите отображать числа в формате Счет № 56-789 (рис. 6). Обращаю ваше внимание, что это именно формат отображения числа. Например, в ячейке А1 хранится число 56789. Я ввел несколько значений в ячейки А1:А4 и аналогичные в ячейки В1:В4. Ячейки А1:А4 оставлю нетронутыми (для сравнения), а В1:В4 отформатирую. Формат содержит четыре раздела: » Счет № » 00-000; » не может быть отрицательным » ; » не может быть нулем » ; » не вводите дефис » . Таким образом, при введении в ячейку положительного числа появится запись типа Счет № 23-456, при вводе отрицательного числа, нуля или текста (а значение 56-792 для Excel является тектом), появится запись, указывающая на ошибку ввода.

    Рис. 6. Первый пользовательский формат

    Задавать все разделы кода для пользовательского числового формата необязательно. Если указано только два раздела, первый используется для положительных чисел и нулей, а второй — для отрицательных чисел. Если задан только один раздел, он применяется для всех чисел. Если какой-то раздел кода нужно пропустить, но включить раздел, который следует за ним, необходимо оставить точку с запятой для пропускаемого раздела. Например, формат
    # ##0;;; » введите число « будет отображать только положительные числа (для отрицательных чисел и нуля ячейка будет выглядеть как пустая), а если ввести в ячейку текст, то отобразится запись введите число.

    Текстовый раздел всегда должен быть последним разделом числового формата. Чтобы вводимый в ячейку текст отображался на экране, в соответствующее место текстового раздела следует поместить знак @. Если текстовый раздел не содержит знака @, вводимый в ячейку текст на экране отображаться не будет. Чтобы вводимый текст дополнялся определенными символами, заключите эти символы в двойные кавычки ( » » ), например, » валовой доход за » @. Если в формате нет текстового раздела (например, используется формат Общий), то формат никак не влияет на нечисловые значения, вводимые в ячейку. Т.е., текст отобразится так, как введен. Кроме того, вся ячейка преобразуется в текст, т.е., выравнивается по левому краю. Изучите рис. 7; также рекомендую открыть соответствующий лист Excel-файла.

    Рис. 7. Особенности использования текстового раздела формата

    Последний пример может вызвать затруднение, но, обратите внимание, что в коде формата (ячейка В4) отсутствует символ @, который определяет место, где должен отразиться введенный в ячейку текст. Т.е. содержимое ячейки С4 будет оставаться постоянным, какой бы текст не был введен в ячейку А4.

    Ссылка на основную публикацию
    ВсеИнструменты 220 Вольт
    Adblock
    detector