Vba как выделить близкие по цвету ячейки
Если вы хотите сопоставить цвет ячейки с другим, вам может помочь метод, описанный в этой статье.
Установите цвет ячейки равным другому цвету ячейки с кодом VBA

Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!
Приведенный ниже метод VBA может помочь вам установить цвет ячейки, равный другому в Excel. Пожалуйста, сделайте следующее.
1. На листе вам нужно сопоставить цвет двух ячеек, щелкните правой кнопкой мыши вкладку листа, а затем щелкните Просмотреть код из контекстного меню. Смотрите скриншот:

2. В дебюте Microsoft Visual Basic для приложений окна, вам необходимо скопировать и вставить код VBA в окно кода.
Код VBA: установить цвет ячейки равным цвету другой ячейки
Внимание: В коде A1 — это ячейка, содержащая цвет заливки, соответствующий цвету C1. Пожалуйста, измените их в соответствии с вашими потребностями.
Затем ячейка C1 заполняется тем же цветом, что и ячейка A1, как показано на скриншоте ниже.

С этого момента, когда цвет заливки в A1 изменяется, C1 будет автоматически соответствовать тому же цвету.
Статьи по теме:
Лучшие инструменты для работы в офисе
Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма .
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон .
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы . Предотвращение дублирования ячеек; Сравнить диапазоны .
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор .
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули , Флажки и многое другое .
- Извлечь текст , Добавить текст, Удалить по позиции, Удалить пробел ; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии .
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом .
- Комбинируйте книги и рабочие листы ; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов ; Пакетное преобразование xls, xlsx и PDF . Pivot Table Grouping by week number, day of week and more. Show Unlocked, Locked Cells by different colors; Highlight Cells That Have Formula/Name . —>
- Более 300 мощных функций . Поддерживает Office / Excel 2007-2019 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint , Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Если у вас Excel 2010 или более поздняя версия, вы можете использовать функцию DisplayFormat, чтобы вернуть цвет ячейки с условным форматированием. Смотри ниже:
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Me.Range(«C1»).Interior.Color = Me.Range(«A1»).DisplayFormat.Interior.Color
End Sub
привет, как применить тот же VBA, но к диапазону ячеек, например:
я хочу, чтобы один и тот же цвет диапазона (C8: X8) применялся к диапазону (S16: AL16) один за другим в том же порядке (S16 получает цвет C16, T16 получает цвет D8 . и т.д)
Приведенный ниже код VBA может помочь вам решить проблему. Спасибо за ваш комментарий.
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xSRg, xDRg, xISRg, xIDRg как диапазон
Dim xFNum As Long
On Error Resume Next
Установите xSRg = Диапазон («C8: X8»)
Установить xDRg = диапазон («S16:AL16»)
Для xFNum = 1 Для xSRg.count
Установить xISRg = xSRg.Item(xFNum)
Установить xIDRg = xDRg.Item(xFNum)
xIDRg.Interior.Color = xISRg.Interior.Color
Следующий xFNum
End Sub
Я пытаюсь сделать то же самое, но у меня есть две таблицы (файла). Электронная таблица 1 является мастером, в котором данные обновляются вручную, а файл (электронная таблица 2) равен данным в той же ячейке, что и электронная таблица 1. Когда я открываю электронную таблицу 2, я получаю запрос на обновление с электронной таблицей 1 без проблем, но если цвет ячейки изменен в электронной таблице 1, он не обновляется в электронной таблице 2, а также не «перечеркивает» шрифты . помогите, пожалуйста?
Это хорошее начало того, чем я хочу заниматься. Но я ищу что-то немного более сложное
Как я могу адаптировать это для применения к нескольким строкам и диапазону. Например, у меня есть столбец заголовка в столбце B, я хочу, чтобы ячейки от G до CS соответствовали цвету строки заголовка, но только в том случае, если в них что-то есть, например, буква x. Я знаю, что могу написать оператор IF и THEN, но как мне применить его к нескольким строкам, не написав код для каждой строки.
Привет, я пытаюсь изменить исходные ячейки, чтобы они соответствовали другим, которые были отформатированы условно. Ваш код
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Me.Range(«C1»).Interior.Color = Me.Range(«A1»).DisplayFormat.Interior.Color
End Sub
я приспособился к
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Me.Range(«A2:C2»).Interior.Color = Me.Range(«D2»).DisplayFormat.Interior.Color
End Sub
Это отлично работает только для одной строки. Как заставить это работать во всех нужных мне строках? Если я повторю код со следующей строкой
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Me.Range(«A3:C3»).Interior.Color = Me.Range(«D3»).DisplayFormat.Interior.Color
End Sub
Затем я получаю сообщение об ошибке компиляции: обнаружено неоднозначное имя: Worksheet_SelectionChange
Я попытался использовать код asPrivate Sub Worksheet_SelectionChange (ByVal Target As Range)
Me.Range(«A2:C10»).Interior.Color = Me.Range(«D2:D10»).DisplayFormat.Interior.ColorEnd Sub
Но все строки просто заполнены черным цветом, а не нужными цветами. Какая кодировка мне нужна?
Макрос для выделения дубликатов разными цветами
Как известно, чтобы выделить дубликаты цветом в Excel можно воспользоваться специальной опцией в «условном форматировании».
Достаточно выделить диапазон, задать цвет заливки, — и все повторяющиеся (или, наоборот, уникальные) значения будут выделены.
Но иногда требуется, чтобы различные повторяющиеся значения были выделены РАЗНЫМИ ЦВЕТАМИ.
В этом случае, без макросов не обойтись. Нажимаем сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), вставляем новый пустой модуль через меню Insert — Module и копируем туда код этого макроса:
Sub ВыделитьДубликатыРазнымиЦветами()
On Error Resume Next
‘ массив цветов, используемых для заливки ячеек-дубликатов
Colors = Array(12900829, 15849925, 14408946, 14610923, 15986394, 14281213, 14277081, _
9944516, 14994616, 12040422, 12379352, 15921906, 14336204, 15261367, 14281213)
Dim coll As New Collection, dupes As New Collection, _
cols As New Collection, ra As Range, cell As Range, n&
Err.Clear: Set ra = Intersect(Selection, ActiveSheet.UsedRange)
If Err Then Exit Sub
ra.Interior.ColorIndex = xlColorIndexNone: Application.ScreenUpdating = False
For Each cell In ra.Cells ‘ запонимаем значение дубликатов в коллекции dupes
Err.Clear: If Len(Trim(cell)) Then coll.Add CStr(cell.Value), CStr(cell.Value)
If Err Then dupes.Add CStr(cell.Value), CStr(cell.Value)
Next cell
For i& = 1 To dupes.Count ‘ заполняем коллекцию cols цветами для разных дубликатов
n = n Mod (UBound(Colors) + 1): cols.Add Colors(n), dupes(i): n = n + 1
Next
For Each cell In ra.Cells ‘ окрашиваем ячейки, если для её значения назначен цвет
cell.Interior.color = cols(CStr(cell.Value))
Next cell
Application.ScreenUpdating = True
End Sub
Теперь можно выделить любой диапазон с данными на листе и запустить макрос с помощью сочетания клавиш Alt+F8 или через кнопку Макросы (Macros) на вкладке Разработчик (Developer).

Плюсом этого макроса является то, что он не виснет при выделении всего листа (или столбца) целиком и не вылетает с ошибкой, если найдено более 55 дубликатов. Макрос взят здесь
Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но они не изменяют эти примеры, чтобы предоставить дополнительные функции или создать процедуры для удовлетворения конкретных требований. В примерах, приведенных в этой статье, используются методы Visual Basic, приведенные в следующей таблице.
В примерах, приведенных в этой статье, используются свойства, указанные в таблице ниже.
Выбор ячейки на активном листе
Чтобы выбрать ячейку D5 на активном листе, можно использовать любой из следующих примеров:
Выбор ячейки на другом листе в той же книге
Чтобы выбрать ячейку E6 на другом листе той же книги, можно использовать любой из следующих примеров:
Вы также можете активировать лист, а затем использовать метод 1, чтобы выбрать ячейку:
Выбор ячейки на листе в другой книге
Чтобы выбрать ячейку F7 на листе в другой книге, можно использовать любой из следующих примеров:
Вы также можете активировать лист, а затем использовать метод 1, чтобы выбрать ячейку:
Выбор диапазона ячеек на активном листе
Чтобы выбрать диапазон C2: D10 на активном листе, можно использовать любой из следующих примеров:
Выбор диапазона ячеек на другом листе в той же книге
Чтобы выбрать диапазон D3: E11 на другом листе той же книги, можно использовать любой из следующих примеров:
Вы также можете активировать лист, а затем использовать способ 4 выше, чтобы выбрать диапазон:
Выбор диапазона ячеек на листе в другой книге
Чтобы выбрать диапазон E4: F12 на листе в другой книге, можно использовать любой из следующих примеров:
Вы также можете активировать лист, а затем использовать способ 4 выше, чтобы выбрать диапазон:
Выбор именованного диапазона на активном листе
Чтобы выбрать именованный диапазон "Test" на активном листе, можно использовать любой из следующих примеров:
Выбор именованного диапазона на другом листе в той же книге
Чтобы выбрать именованный диапазон "Test" на другом листе той же книги, можно использовать следующий пример:
Вы также можете активировать лист, а затем использовать метод 7 выше для выбора именованного диапазона:
Выбор именованного диапазона на листе в другой книге
Чтобы выбрать именованный диапазон "Test" на листе в другой книге, можно использовать следующий пример:
Вы также можете активировать лист, а затем использовать метод 7 выше для выбора именованного диапазона:
Выбор ячейки относительно активной ячейки
Чтобы выделить ячейку с пятью строками ниже и четырьмя столбцами слева от активной ячейки, можно использовать следующий пример:
Чтобы выделить ячейку с двумя строками выше и тремя столбцами справа от активной ячейки, можно использовать следующий пример:
При попытке выбрать ячейку, которая находится в состоянии "не на листе", произойдет ошибка. В первом примере, приведенном выше, возвращается сообщение об ошибке, если активная ячейка находится в столбцах A-D, так как при перемещении четырех столбцов влево активная ячейка будет иметь недопустимый адрес ячейки.
Выбор ячейки относительно другой (неактивной) ячейки
Чтобы выделить ячейку с пятью строками ниже и четырьмя столбцами справа от ячейки C7, можно использовать любой из следующих примеров:
Выбор диапазона смещения ячеек в указанном диапазоне
Чтобы выбрать диапазон ячеек, размер которых совпадает с именованным диапазоном "Test", но с последующим сдвигом на четыре строки вниз и тремя столбцами вправо, можно использовать следующий пример:
Если именованный диапазон находится на другом (неактивном) листе, сначала активируйте этот лист, а затем выберите диапазон, используя следующий пример:
Выбор указанного диапазона и изменение размера выделенного фрагмента
Для выбора именованного диапазона "Database" и последующего расширения выделенного фрагмента на пять строк можно использовать следующий пример:
Выбор указанного диапазона, его смещение и изменение его размера
Чтобы выбрать диапазон четыре строки ниже и три столбца справа от именованного диапазона "база данных" и включить две строки и один столбец больше, чем именованный диапазон, можно использовать следующий пример:
Выбор объединения двух или более указанных диапазонов
Чтобы выбрать объединение (то есть область объединения) двух именованных диапазонов "Test" и "Sample", можно использовать следующий пример:
чтобы этот пример работал, оба диапазона должны находиться на одном листе. Кроме того, обратите внимание на то, что метод Union не работает на разных листах. Например, эта строка работает нормально.
Возвращает сообщение об ошибке:
Сбой метода Union класса приложения
Как выбрать пересечение двух или более указанных диапазонов
Чтобы выбрать пересечение двух именованных диапазонов "Test" и "Sample", можно использовать следующий пример:
Обратите внимание, что для работы этого примера оба диапазона должны находиться на одном листе.
В примерах, описанных в этой статье 17-21, описывается следующий пример набора данных. В каждом примере указывается диапазон ячеек в выбранном образце данных.
Выбор последней ячейки столбца с непрерывными данными
Чтобы выбрать последнюю ячейку в непрерывном столбце, используйте следующий пример:
Если этот код используется с образцом таблицы, будет выбрана ячейка A4.
Как выделить пустую ячейку в нижней части столбца непрерывных данных
Чтобы выделить ячейку под диапазоном смежных ячеек, используйте следующий пример:
Если этот код используется с образцом таблицы, будет выбрана ячейка A5.
Выбор всего диапазона смежных ячеек в столбце
Чтобы выбрать диапазон смежных ячеек в столбце, используйте один из следующих примеров:
Если этот код используется с образцом таблицы, будут выбраны ячейки a1 — A4.
Выбор всего диапазона несмежных ячеек в столбце
Чтобы выбрать диапазон ячеек, которые не являются смежными, используйте один из следующих примеров:
Если этот код используется с образцом таблицы, он выберет ячейки с a1 по A6.
Выбор прямоугольного диапазона ячеек
Чтобы выбрать прямоугольный диапазон ячеек вокруг ячейки, используйте метод CurrentRegion. Диапазон, выбранный методом CurrentRegion, это область, ограниченная любым сочетанием пустых строк и пустых столбцов. Ниже приведен пример использования метода CurrentRegion.
В этом коде будут выделены ячейки A1 — C4. В других примерах ниже показано, как выбрать один и тот же диапазон ячеек:
В некоторых случаях может потребоваться выделить ячейки a1 — C6. В этом примере метод CurrentRegion не будет работать из-за пустой строки на строке 5. В приведенных ниже примерах будут выбраны все ячейки:
Выбор нескольких несмежных столбцов различной длины
Чтобы выбрать несколько несмежных столбцов различной длины, используйте следующий пример таблицы и макроса:
При использовании этого кода с образцом таблицы ячейки a1: A3 и C1: C6 будут выбраны.
Примечания к примерам
Обычно свойство Активешит можно опустить, так как оно подразумевает, что конкретный лист не является именем. Например, вместо
Вы можете использовать следующие компоненты:
Также можно опустить свойство Активеворкбук. Если не указана конкретная книга, подразумевается активная книга.
При использовании метода Application. goto, если вы хотите использовать два метода Cell в методе Range, если указанный диапазон находится на другом (неактивном) листе, необходимо включить объект Sheets каждый раз. Например:
Для любого элемента в кавычках (например, именованного диапазона "Test") можно также использовать переменную, значение которой является строкой текста. Например, вместо