Excel vba найти ячейки по цвету excel

cybereug

Гость


необходимо в excel найти в столбце 1 ячейку синего цвета и скопировать ее в столбец 2 во все строки до нахождения следующей синей ячейки в столбце 1. Далее опять копируется синяя ячейка до нахожденя следующей синей. Заранее спасибо!


Записан
HandKot

Молодой специалист

ru
Offline Offline


Сервис-Макрос-Начать запись

Потом выбираешь Правка-Найти Формат, указываешь цвет ячейки для поиска

После посмотри полученный код и подгони его под себя


Записан

I Have Nine Lives You Have One Only
THINK!

PooH

Глобальный модератор

ru
Offline Offline
Пол: Мужской

… и можно без хлеба!


а зачем тут синию искать?  иди по столбцу и как наткнулся на синию, начинай её вставлять во второй столбец для всех «не синих»


Записан

Удачного всем кодинга! -=x[PooH]x=-

cybereug

Гость


а как это програмно сделать? вопрос в том что синие ячейки имеют разные значения и значение должно меняться после нахождения следующей синей ячейки

« Последнее редактирование: 18-07-2006 14:05 от cybereug »
Записан
cybereug

Гость


вот в приложении примерно что нужно сделать и что должно получиться

RomCom


Sub Макрос1()
Dim sht As Worksheet, i As Integer
Set sht = Application.ActiveWorkbook.ActiveSheet

‘находим первую синию ячейку
For i = 1 To 100 ‘100 — диапазон
    If sht.Cells(i, 1).Interior.ColorIndex = 5 Then
        Exit For
    End If
Next

‘ну и собственно вставка
For i = i To 100 ‘100 — диапазон
    If sht.Cells(i, 1).Interior.ColorIndex = 5 Then
        sht.Cells(i, 1).Select
        Selection.Copy
    Else
            sht.Cells(i, 2).Select
            sht.Paste
    End If
Next
End Sub

« Последнее редактирование: 19-12-2007 18:19 от Алексей1153++ »
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine

cybereug

Гость


большое спасибо! а как удалить потом строчки с синими ячейками с кторых начиналась вставка?

« Последнее редактирование: 19-07-2006 04:44 от cybereug »
Записан
 

Никита Соловьев

Пользователь

Сообщений: 38
Регистрация: 09.09.2021

#1

14.09.2021 10:24:02

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

Код
Sub отлов
With ThisWorkbook.ActiveSheet

    For i = 5 To 30
        ActiveSheet.Rows(i).Select
        If ActiveCell.EntireRow.Interior.ColorIndex = Yellow Then ActiveCell.EntireRow.Interior.Pattern = xlNone
    Next
End With
End Sub

Изменено: Никита Соловьев14.09.2021 11:00:25

На работе столкнулся с такой задачей — имеется таблица в Excel, в которой ведется табель выходов рабочих в цеху.

В таблице подсчитывается количество часов, фактически отработанных; часов переработки и часов сверх нормы. Так вот, необходимо сделать так, чтобы производилась автоматическая выборка ячеек таблицы по цвету заливки последних.

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

Чтобы было понятнее, приведу изображение подобной таблицы. В ней необходимо произвести подсчет ячеек с заливкой зеленого цвета:

Табель выходов с зелеными ячейками

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

Прекрасное и готовое решение моей задачи я нашел на сайте http://www.excel-vba.ru/. Даже не одно, а целых два решения, под разные условия. Ниже привожу последовательность шагов, которые привели меня к успеху.

Сразу скажу, что изображения были сделаны в Excel 2007. В Excel 2010 все несколько по другому, но запутаться невозможно, если что.

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

Переходим в “Пуск — Параметры Excel” и находим в левом списке пункт “Надстройки”:

Excel - надстройка VBA

Выбираем в основном окне строчку “Пакет анализа — VBA” и жмем кнопочку “Перейти” в самом низу окна. Откроется еще одно окошко со списком доступных под Excel расширений (надстроек). Снова выбираем в этом списке “Пакет анализа — VBA” и соглашаемся, что хотим установить его, нажав кнопку “ОК”:

Excel - Пакет анализа VBA

Потребуется установочный диск с Microsoft Office на нем (или же подключение к Интернет) чтобы программа получила необходимые пакеты для инсталляции. Если установка прошла успешно, то в “Ленте” появиться пункт “Разработчик” (Excel 2010). Можно перейти в него через эту панель или же с помощью сочетания клавиш Alt + F11.

Появиться окно, в котором выполняется написание кода на языке VBA, то есть фактически создаются пользовательские функции. Я писать их не буду, так как языка VBA не знаю и знать особого желания нет (все знать невозможно).

Вставка готовых функций в Excel VBA

Но есть готовые решения, которые я вставлю в виде кода с помощью меню “Insert — Module”. Просто берем отсюда код функций и вставляем в свой Excel. Затем сохраняем файл Excel с поддержкой VBA (макросов) и все готово для дальнейшей работы.

Вставленные функции появятся в списке формул таблицы:

Excel - пользовательские функции

Ниже представлен готовый код двух функций на VBA, написанных их автором Дмитрием Щербаковым. Первая функция с именем “CountByInteriorColor” выполняет подсчет количества ячеек по цвету заливки.

Вторая функция с именем “SumByInteriorColor” выполняет выборку ячеек по цвету заливки и суммирует все значения в этих ячейках.

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


  • 1
    
    rRange
    

    — диапазон с ячейками для подсчета


  • 1
    
    rColorCell
    

    — ячейка-образец с цветом заливки


  • 1
    
    bSumHide
    

    1
    
    ИСТИНА
    

    или

    1
    
    1
    

    учитывает скрытые ячейки;

    1
    
    ЛОЖЬ
    

    ,

    1
    
    0
    

    или опущен(по умолчанию) — скрытые ячейки не подсчитываются.

Функция подсчета количества ячеек

'---------------------------------------------------------------------------------------
' Procedure : CountByInteriorColor
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция подсчета ячеек на основе цвета заливки.
' Аргументы:
'             rRange     - диапазон с ячейками для подсчета.
'             rColorCell - ячейка-образец с цветом заливки.
'             bSumHide   - ИСТИНА или 1 учитывает скрытые ячейки.
'                          ЛОЖЬ, 0 или опущен(по умолчанию) - скрытые ячейки не подсчитываются.
'---------------------------------------------------------------------------------------
Function CountByInteriorColor(rRange As Range, rColorCell As Range, Optional bSumHide As Boolean = False)
  Dim lColor As Long, rCell As Range, lCnt As Long, vVal
  lColor = rColorCell.Interior.Color
  For Each rCell In rRange
      If rCell.Interior.Color = lColor Then
          If rCell.EntireRow.Hidden Or rCell.EntireColumn.Hidden Then
              If bSumHide Then lCnt = lCnt + 1
          Else
              lCnt = lCnt + 1
          End If
      End If
  Next rCell
  CountByInteriorColor = lCnt
End Function

Синтаксис этой функции прост:

=CountByInteriorColor(D8:AG8;$E$65)

Функция подсчета суммы ячеек

'---------------------------------------------------------------------------------------
' Procedure : SumByInteriorColor
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция суммирования ячеек на основе цвета заливки.
' Аргументы:
'             rRange     - диапазон с ячейками для суммирования.
'             rColorCell - ячейка-образец с цветом заливки.
'             bSumHide   - ИСТИНА или 1 учитывает скрытые ячейки.
'                          ЛОЖЬ, 0 или опущен(по умолчанию) - скрытые ячейки не суммируются.
'---------------------------------------------------------------------------------------
Function SumByInteriorColor(rRange As Range, rColorCell As Range, Optional bSumHide As Boolean = False)
  Dim lColor As Long, rCell As Range, dblSum As Double, vVal
  lColor = rColorCell.Interior.Color
  For Each rCell In rRange
      If rCell.Interior.Color = lColor Then
          vVal = rCell.Value
          If IsNumeric(vVal) Then
              If rCell.EntireRow.Hidden Or rCell.EntireColumn.Hidden Then
                  If bSumHide Then dblSum = dblSum + vVal
              Else
                  dblSum = dblSum + vVal
              End If
          End If
      End If
  Next rCell
  SumByInteriorColor = dblSum
End Function

Синтаксис этой функции следующий:

=SumByInteriorColor(D8:AG37;E63)

При вставке пользовательской функции “CountByInteriorColor” и “SumByInteriorColor” можно воспользоваться либо “Мастером функций”, либо произвести указание диапазона ячеек и ячейку-критерий вручную.

Описание рабочей формулы

Готовый пример работы функции “CountByInteriorColor” можно посмотреть на рисунке “Табель выходов с зелеными ячейками”. В нем подсчет отработанного времени производится по следующей формуле:

=((Сумма фактически отработанных часов) - (Норма часов выхода за месяц)) + ((Кол-во дней с переработкой)*4)

Фактически эта формула получается такой (смотри строку №13 на рисунке):

=(AH13-AI13) + (CountByInteriorColor(D13:AG13;$E$65)*4)

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


Содержание

  1. Поиск по цвету ячейки в Excel
  2. Пример использования
  3. Сортировка по цвету ячеек
  4. Фильтр по цвету ячеек
  5. Excel — выборка ячеек по цвету заливки
  6. December 15, 2013
  7. Режим “Разработчик” в Excel
  8. Вставка готовых функций в Excel VBA
  9. Функция подсчета количества ячеек
  10. Функция подсчета суммы ячеек
  11. Описание рабочей формулы
  12. Красивая функция trackBy
  13. Свойство ColorIndex (Excel Graph)
  14. Синтаксис
  15. Примечания
  16. Пример
  17. Поддержка и обратная связь
  18. Vba excel найти ячейки по цвету

Поиск по цвету ячейки в Excel

Функция =ЦВЕТЗАЛИВКИ(ЯЧЕЙКА) возвращает код цвета заливки выбранной ячейки. Имеет один обязательный аргумент:

  • ЯЧЕЙКА — ссылка на ячейку, для которой необходимо применить функцию.

Ниже представлен пример, демонстрирующий работу функции.

Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета заливки ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9

Пример использования

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

С помощью функции ЦВЕТЗАЛИВКИ все это становится выполнимым. Например, «протяните» данную формулу с цветом заливки в соседнем столбце и производите вычисления на основе числового кода ячейки.

Создатели Excel решили, начиная от 2007-ой версии ввести возможность сортировки данных по цвету. Для этого послужило поводом большая потребность пользователей предыдущих версий, упорядочивать данные в такой способ. Раньше реализовать сортировку данных относительно цвета можно было только с помощью создания макроса VBA. Создавалась пользовательская функция и вводилась как формула под соответствующим столбцом, по которому нужно было выполнить сортировку. Теперь такие задачи можно выполнять значительно проще и эффективнее.

Сортировка по цвету ячеек

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

Чтобы расположить строки в последовательности: зеленый, желтый, красный, а потом без цвета – выполним следующий ряд действий:

  • Щелкните на любую ячейку в области диапазона данных и выберите инструмент: «ДАННЫЕ»-«Сортировка и фильтр»-«Сортировка».

  • Убедитесь, что отмечена галочкой опция «Мои данные содержат заголовки», а после чего из первого выпадающего списка выберите значение «Наименование». В секции «Сортировка» выберите опцию «Цвет ячейки». В секции «Порядок» раскройте выпадающее меню «Нет цвета» и нажмите на кнопку зеленого квадратика.

  • Нажмите на кнопку «Копировать уровень» и в этот раз укажите желтый цвет в секции «Порядок».

  • Аналогичным способом устанавливаем новое условие для сортировки относительно красного цвета заливки ячеек. И нажмите на кнопку ОК.

Ожидаемый результат изображен ниже на рисунке:

Аналогичным способом можно сортировать данные по цвету шрифта или типу значка которые содержат ячейки. Для этого достаточно только указать соответствующий критерий в секции «Сортировка» диалогового окна настройки условий.

Фильтр по цвету ячеек

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

  • Перейдите на любую ячейку диапазона и воспользуйтесь инструментом: «ДАННЫЕ»-«Сортировка и фильтр»-«Фильтр».

  • Раскройте одно из выпадающих меню, которые появились в заголовках столбцов таблицы и наведите курсор мышки на опцию «Фильтр по цвету».

  • Из всплывающего подменю выберите зеленый цвет.

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

Обратите внимание! В режиме автофильтра выпадающие меню так же содержит опцию «Сортировка по цвету»:

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

Источник

Excel — выборка ячеек по цвету заливки

December 15, 2013

На работе столкнулся с такой задачей — имеется таблица в Excel, в которой ведется табель выходов рабочих в цеху.

В таблице подсчитывается количество часов, фактически отработанных; часов переработки и часов сверх нормы. Так вот, необходимо сделать так, чтобы производилась автоматическая выборка ячеек таблицы по цвету заливки последних.

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

Чтобы было понятнее, приведу изображение подобной таблицы. В ней необходимо произвести подсчет ячеек с заливкой зеленого цвета:

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

Прекрасное и готовое решение моей задачи я нашел на сайте http://www.excel-vba.ru/. Даже не одно, а целых два решения, под разные условия. Ниже привожу последовательность шагов, которые привели меня к успеху.

Сразу скажу, что изображения были сделаны в Excel 2007. В Excel 2010 все несколько по другому, но запутаться невозможно, если что.

Режим “Разработчик” в Excel

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

Переходим в “Пуск — Параметры Excel” и находим в левом списке пункт “Надстройки”:

Выбираем в основном окне строчку “Пакет анализа — VBA” и жмем кнопочку “Перейти” в самом низу окна. Откроется еще одно окошко со списком доступных под Excel расширений (надстроек). Снова выбираем в этом списке “Пакет анализа — VBA” и соглашаемся, что хотим установить его, нажав кнопку “ОК”:

Потребуется установочный диск с Microsoft Office на нем (или же подключение к Интернет) чтобы программа получила необходимые пакеты для инсталляции. Если установка прошла успешно, то в “Ленте” появиться пункт “Разработчик” (Excel 2010). Можно перейти в него через эту панель или же с помощью сочетания клавиш Alt + F11 .

Появиться окно, в котором выполняется написание кода на языке VBA, то есть фактически создаются пользовательские функции. Я писать их не буду, так как языка VBA не знаю и знать особого желания нет (все знать невозможно).

Вставка готовых функций в Excel VBA

Но есть готовые решения, которые я вставлю в виде кода с помощью меню “Insert — Module”. Просто берем отсюда код функций и вставляем в свой Excel. Затем сохраняем файл Excel с поддержкой VBA (макросов) и все готово для дальнейшей работы.

Вставленные функции появятся в списке формул таблицы:

Ниже представлен готовый код двух функций на VBA, написанных их автором Дмитрием Щербаковым. Первая функция с именем “CountByInteriorColor” выполняет подсчет количества ячеек по цвету заливки.

Вторая функция с именем “SumByInteriorColor” выполняет выборку ячеек по цвету заливки и суммирует все значения в этих ячейках.

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

  • — диапазон с ячейками для подсчета
  • — ячейка-образец с цветом заливки
  • — или учитывает скрытые ячейки; , или опущен(по умолчанию) — скрытые ячейки не подсчитываются.

Функция подсчета количества ячеек

Синтаксис этой функции прост:

Функция подсчета суммы ячеек

Синтаксис этой функции следующий:

При вставке пользовательской функции “CountByInteriorColor” и “SumByInteriorColor” можно воспользоваться либо “Мастером функций”, либо произвести указание диапазона ячеек и ячейку-критерий вручную.

Описание рабочей формулы

Готовый пример работы функции “CountByInteriorColor” можно посмотреть на рисунке “Табель выходов с зелеными ячейками”. В нем подсчет отработанного времени производится по следующей формуле:

Фактически эта формула получается такой (смотри строку №13 на рисунке):

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

Красивая функция trackBy

Пример красивой функции trackBy для Angular. Функция понравилась своей лаконичностью:<% highlight typescript %>public trackByNumber = (_. … Continue reading

Источник

Свойство ColorIndex (Excel Graph)

Возвращает или задает цвет границы, шрифта или внутренней области, как показано в следующей таблице. Цвет указывается в виде значения индекса в текущей цветовой палитре или в виде одной из следующих констант XlColorIndex: xlColorIndexAutomatic или xlColorIndexNone. Для чтения и записи, Variant.

Синтаксис

выражение. ColorIndex

выражение (обязательно). Выражение, возвращающее один из объектов списка Применяется к.

Примечания

Object Описание
Border Цвет границы.
Font Цвет шрифта.
Interior Цвет внутренней заливки. Присвойте параметру ColorIndex значение xlColorIndexNone, чтобы не применять внутреннюю заливку. Присвойте параметру ColorIndex значение xlColorIndexAutomatic, чтобы указать автоматическую заливку (для графических объектов).

Это свойство указывает цвет в виде индекса в цветовой палитре. На рисунке ниже показаны значения цветового индекса в цветовой палитре по умолчанию.

Пример

В следующих примерах предполагается, что используется цветовая палитра по умолчанию.

В этом примере устанавливается цвет основных линий сетки для оси значений.

В этом примере устанавливается красный цвет внутреннего заполнения диаграммы и синий цвет для границы.

Если вы хотите использовать цвет с объектом FormatCondition в Visual Basic, ознакомьтесь со статьей Свойство Interior.ColorIndex.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Vba excel найти ячейки по цвету

Модератор форума: китин, _Boroda_

Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск и перенос данных с учетом цвета ячейки (Макросы/Sub)

Поиск и перенос данных с учетом цвета ячейки

EvgeniyVS Дата: Понедельник, 14.05.2018, 15:55 | Сообщение № 1

Как видно из функции, она ссылается на документ [04.18.xlsm] из документа 05.18. Но по прошествии месяца, мне придется переписывать функцию, ссылаясь на документ [05.18.xlsm] из документа 06.18.
Отлично бы реализовать следующее:
При нажатии на кнопку “Пересчет” происходило не только перетягивание данных с цветом ячейки, но и изменение функцИЙ (индекс поискпоз), в массиве C7:H26, на листах магазинов, на основании ячейки D2(отражающую документ на который ссылается функция)

P.S. — мне рекомендовали создать тему в этой ветке.

Как видно из функции, она ссылается на документ [04.18.xlsm] из документа 05.18. Но по прошествии месяца, мне придется переписывать функцию, ссылаясь на документ [05.18.xlsm] из документа 06.18.
Отлично бы реализовать следующее:
При нажатии на кнопку “Пересчет” происходило не только перетягивание данных с цветом ячейки, но и изменение функцИЙ (индекс поискпоз), в массиве C7:H26, на листах магазинов, на основании ячейки D2(отражающую документ на который ссылается функция)

P.S. — мне рекомендовали создать тему в этой ветке. EvgeniyVS

Как видно из функции, она ссылается на документ [04.18.xlsm] из документа 05.18. Но по прошествии месяца, мне придется переписывать функцию, ссылаясь на документ [05.18.xlsm] из документа 06.18.
Отлично бы реализовать следующее:
При нажатии на кнопку “Пересчет” происходило не только перетягивание данных с цветом ячейки, но и изменение функцИЙ (индекс поискпоз), в массиве C7:H26, на листах магазинов, на основании ячейки D2(отражающую документ на который ссылается функция)

Источник

Adblock
detector

как найти ячейки с определенным цветом?

Необходимо в excel найти в столбце 1 ячейку синего цвета и скопировать ее в столбец 2 во все строки до нахождения следующей синей ячейки в столбце 1. Далее опять копируется синяя ячейка до нахожденя следующей синей. Заранее спасибо!

10 ответов

7.8K

18 июля 2006 года

DrCoder

106 / / 27.01.2006

гы-гы )))

14K

18 июля 2006 года

cybereyg

18 / / 17.07.2006

а что тут смешного?

275

18 июля 2006 года

pashulka

985 / / 19.09.2004

Cybereyg, Впервые возможность поиска ячейки, исходя из параметров форматирования, появилась только в MS Excel XP. Если у Вас наличествует более ранняя версия, то Вам, по всей видимости, придётся использовать перебор ячеек.

14K

18 июля 2006 года

cybereyg

18 / / 17.07.2006

в приложени прикрепелено что есть и что должно получиться

14K

18 июля 2006 года

cybereyg

18 / / 17.07.2006

у меня как раз Excel XP

8.8K

18 июля 2006 года

The_Ice

109 / / 04.04.2006

а в чем смысл этих переставлений? если не секрет…

14K

18 июля 2006 года

cybereyg

18 / / 17.07.2006

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

275

18 июля 2006 года

pashulka

985 / / 19.09.2004

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

Код:

iMaxRow& = Cells(65536, 1).End(xlUp).Row: iTempRow& = iMaxRow&

For iRow& = iMaxRow& To 1 Step -1
    If Cells(iRow&, 1).Interior.Color = vbBlue Then
       Cells(iRow&, 1).Copy Range(Cells(iRow& + 1, 2), Cells(iTempRow&, 2))
       iTempRow& = iRow& — 1
    End If
Next

P.S. Если же Вы хотите использовать именно поиск подобных ячеек, то см. справку касательно Find + FindFormat

14K

18 июля 2006 года

cybereyg

18 / / 17.07.2006

Большое спасибо! Помогло. А как можно потом удалить строчку с синей ячейкой, с которой началась вставка?

275

18 июля 2006 года

pashulka

985 / / 19.09.2004

Если Вы действительно хотите удалить только ячейку, то :

Код:

Если же Вам нужно удалить строку, которой принадлежит эта ячейка, то :

Код:

Cells(iRow&, 1).EntireRow.Delete
Rem Или
Rows(iRow&).Delete

Метод Find объекта Range для поиска ячейки по ее данным в VBA Excel. Синтаксис и компоненты. Знаки подстановки для поисковой фразы. Простые примеры.

Метод Find объекта Range предназначен для поиска ячейки и сведений о ней в заданном диапазоне по ее значению, формуле и примечанию. Чаще всего этот метод используется для поиска в таблице ячейки по слову, части слова или фразе, входящей в ее значение.

Синтаксис метода Range.Find

Expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

Expression – это переменная или выражение, возвращающее объект Range, в котором будет осуществляться поиск.

В скобках перечислены параметры метода, среди них только What является обязательным.

Метод Range.Find возвращает объект Range, представляющий из себя первую ячейку, в которой найдена поисковая фраза (параметр What). Если совпадение не найдено, возвращается значение Nothing.

Если необходимо найти следующие ячейки, содержащие поисковую фразу, используется метод Range.FindNext.

Параметры метода Range.Find

Наименование Описание
Обязательный параметр
What Данные для поиска, которые могут быть представлены строкой или другим типом данных Excel. Тип данных параметра — Variant.
Необязательные параметры
After Ячейка, после которой следует начать поиск.
LookIn Уточняет область поиска. Список констант xlFindLookIn:

  • xlValues (-4163) – значения;
  • xlComments (-4144) – примечания*;
  • xlNotes (-4144) – примечания*;
  • xlFormulas (-4123) – формулы.
LookAt Поиск частичного или полного совпадения. Список констант xlLookAt:

  • xlWhole (1) – полное совпадение;
  • xlPart (2) – частичное совпадение.
SearchOrder Определяет способ поиска. Список констант xlSearchOrder:

  • xlByRows (1) – поиск по строкам;
  • xlByColumns (2) – поиск по столбцам.
SearchDirection Определяет направление поиска. Список констант xlSearchDirection:

  • xlNext (1) – поиск вперед;
  • xlPrevious (2) – поиск назад.
MatchCase Определяет учет регистра:

  • False (0) – поиск без учета регистра (по умолчанию);
  • True (1) – поиск с учетом регистра.
MatchByte Условия поиска при использовании двухбайтовых кодировок:

  • False (0) – двухбайтовый символ может соответствовать однобайтовому символу;
  • True (1) – двухбайтовый символ должен соответствовать только двухбайтовому символу.
SearchFormat Формат поиска – используется вместе со свойством Application.FindFormat.

* Примечания имеют две константы с одним значением. Проверяется очень просто: MsgBox xlComments и MsgBox xlNotes.

В справке Microsoft тип данных всех параметров, кроме SearchDirection, указан как Variant.

Знаки подстановки для поисковой фразы

Условные знаки в шаблоне поисковой фразы:

  • ? – знак вопроса обозначает любой отдельный символ;
  • * – звездочка обозначает любое количество любых символов, в том числе ноль символов;
  • ~ – тильда ставится перед ?, * и ~, чтобы они обозначали сами себя (например, чтобы тильда в шаблоне обозначала сама себя, записать ее нужно дважды: ~~).

Простые примеры

При использовании метода Range.Find в VBA Excel необходимо учитывать следующие нюансы:

  1. Так как этот метод возвращает объект Range (в виде одной ячейки), присвоить его можно только объектной переменной, объявленной как Variant, Object или Range, при помощи оператора Set.
  2. Если поисковая фраза в заданном диапазоне найдена не будет, метод Range.Find возвратит значение Nothing. Обращение к свойствам несуществующей ячейки будет генерировать ошибки. Поэтому, перед использованием результатов поиска, необходимо проверить объектную переменную на содержание в ней значения Nothing.

В примерах используются переменные:

  • myPhrase – переменная для записи поисковой фразы;
  • myCell – переменная, которой присваивается первая найденная ячейка, содержащая поисковую фразу, или значение Nothing, если поисковая фраза не найдена.

Пример 1

Sub primer1()

Dim myPhrase As Variant, myCell As Range

myPhrase = «стакан»

Set myCell = Range(«A1:L30»).Find(myPhrase)

If Not myCell Is Nothing Then

MsgBox «Значение найденной ячейки: « & myCell

MsgBox «Строка найденной ячейки: « & myCell.Row

MsgBox «Столбец найденной ячейки: « & myCell.Column

MsgBox «Адрес найденной ячейки: « & myCell.Address

Else

MsgBox «Искомая фраза не найдена»

End If

End Sub

В этом примере мы присваиваем переменной myPhrase значение для поиска – "стакан". Затем проводим поиск этой фразы в диапазоне "A1:L30" с присвоением результата поиска переменной myCell. Далее проверяем переменную myCell, не содержит ли она значение Nothing, и выводим соответствующие сообщения.

Ознакомьтесь с работой кода VBA в случаях, когда в диапазоне "A1:L30" есть ячейка со строкой, содержащей подстроку "стакан", и когда такой ячейки нет.

Пример 2

Теперь посмотрим, как метод Range.Find отреагирует на поиск числа. В качестве диапазона поиска будем использовать первую строку активного листа Excel.

Sub primer2()

Dim myPhrase As Variant, myCell As Range

myPhrase = 526.15

Set myCell = Rows(1).Find(myPhrase)

If Not myCell Is Nothing Then

MsgBox «Значение найденной ячейки: « & myCell

Else: MsgBox «Искомая фраза не найдена»

End If

End Sub

Несмотря на то, что мы присвоили переменной числовое значение, метод Range.Find найдет ячейку со значением и 526,15, и 129526,15, и 526,15254. То есть, как и в предыдущем примере, поиск идет по подстроке.

Чтобы найти ячейку с точным соответствием значения поисковой фразе, используйте константу xlWhole параметра LookAt:

Set myCell = Rows(1).Find(myPhrase, , , xlWhole)

Аналогично используются и другие необязательные параметры. Количество «лишних» запятых перед необязательным параметром должно соответствовать количеству пропущенных компонентов, предусмотренных синтаксисом метода Range.Find, кроме случаев указания необязательного параметра по имени, например: LookIn:=xlValues. Тогда используется одна запятая, независимо от того, сколько компонентов пропущено.

Пример 3

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

Sub primer3()

Dim myPhrase As Variant, myCell As Range

myPhrase = «01.02.2019»

myPhrase = CDate(myPhrase)

Set myCell = Range(«A:A»).Find(myPhrase)

If Not myCell Is Nothing Then

MsgBox «Номер начальной строки: « & myCell.Row

Else: MsgBox «Даты « & myPhrase & » в таблице нет»

End If

End Sub

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

На чтение 3 мин Просмотров 4.4к. Опубликовано 25.11.2021

Содержание

  1. Пример использования
  2. Сортировка по цвету ячеек
  3. Фильтр по цвету ячеек

Функция =ЦВЕТЗАЛИВКИ(ЯЧЕЙКА) возвращает код цвета заливки выбранной ячейки. Имеет один обязательный аргумент:

  • ЯЧЕЙКА — ссылка на ячейку, для которой необходимо применить функцию.

Ниже представлен пример, демонстрирующий работу функции.

Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета заливки ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9

Пример использования

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

С помощью функции ЦВЕТЗАЛИВКИ все это становится выполнимым. Например, «протяните» данную формулу с цветом заливки в соседнем столбце и производите вычисления на основе числового кода ячейки.

Создатели Excel решили, начиная от 2007-ой версии ввести возможность сортировки данных по цвету. Для этого послужило поводом большая потребность пользователей предыдущих версий, упорядочивать данные в такой способ. Раньше реализовать сортировку данных относительно цвета можно было только с помощью создания макроса VBA. Создавалась пользовательская функция и вводилась как формула под соответствующим столбцом, по которому нужно было выполнить сортировку. Теперь такие задачи можно выполнять значительно проще и эффективнее.

Сортировка по цвету ячеек

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

Чтобы расположить строки в последовательности: зеленый, желтый, красный, а потом без цвета – выполним следующий ряд действий:

  • Щелкните на любую ячейку в области диапазона данных и выберите инструмент: «ДАННЫЕ»-«Сортировка и фильтр»-«Сортировка».

Поиск по цвету ячейки в Excel

  • Убедитесь, что отмечена галочкой опция «Мои данные содержат заголовки», а после чего из первого выпадающего списка выберите значение «Наименование». В секции «Сортировка» выберите опцию «Цвет ячейки». В секции «Порядок» раскройте выпадающее меню «Нет цвета» и нажмите на кнопку зеленого квадратика.

Поиск по цвету ячейки в Excel

  • Нажмите на кнопку «Копировать уровень» и в этот раз укажите желтый цвет в секции «Порядок».

Поиск по цвету ячейки в Excel

  • Аналогичным способом устанавливаем новое условие для сортировки относительно красного цвета заливки ячеек. И нажмите на кнопку ОК.

Поиск по цвету ячейки в Excel

Ожидаемый результат изображен ниже на рисунке:

Аналогичным способом можно сортировать данные по цвету шрифта или типу значка которые содержат ячейки. Для этого достаточно только указать соответствующий критерий в секции «Сортировка» диалогового окна настройки условий.

Фильтр по цвету ячеек

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

  • Перейдите на любую ячейку диапазона и воспользуйтесь инструментом: «ДАННЫЕ»-«Сортировка и фильтр»-«Фильтр».

Поиск по цвету ячейки в Excel

  • Раскройте одно из выпадающих меню, которые появились в заголовках столбцов таблицы и наведите курсор мышки на опцию «Фильтр по цвету».

Поиск по цвету ячейки в Excel

  • Из всплывающего подменю выберите зеленый цвет.

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

Обратите внимание! В режиме автофильтра выпадающие меню так же содержит опцию «Сортировка по цвету»:

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

Оглавление

Пример:

Реализовать код:

Четкий метод клеточного объекта

Динамически представляет область данных

Метод копирования объекта ячейки

Пример кода 2.0

Селективная паста (неопытная) метод клеточного объекта

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

Операция параметра является дополнительной операцией для вставки, которая может быть любой из следующей таблицы.

Параметр Skipblanks указывает, пропустить ли пропущенную ячейку. Если она истина, это означает, что пустой блок в буфере обмена не скопируется в целевую область.

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


Пример:

Как показано на рисунке, таблица представляет собой данные о продажах продавца в определенный месяц. При проверке данных было обнаружено, что были обнаружены некоторые проблемные данные, и цвет заполнения был изменен на серый. Теперь вам нужно показывать эти данные одновременно и скопировать в столбце F: H. Как использовать VBA для их достижения?

Регионы продаж продавец Объем продаж
Гуанчжоу Ченг Цзяньхуа 135000
Шэньчжэнь Ли Гомин 67200
Шэньчжэнь Юань Жиганг 79500
Шэньчжэнь Чжоу Хэнлин 225000
Гуанчжоу Yongyongfu 15400
Гуанчжоу Sun Yumei 2500
Шанхай Чен Яджин 37400
Шанхай Кан Сяоюн 12000
Шанхай Лю Чен 22500
Гуанчжоу Свет 73500
Гуанчжоу Ю Цзяньхуй 235000
Шандун Ван Вэнькун 136500
Шандун Зенг Гоан 21000
Гуанчжоу Лю Чифенг 16000
Гуанчжоу Лю Юдзу 78000
Гуанчжоу Ю Вейгуанг 36000
Гуанчжоу Ян Цзяньджун 170000
Шэньчжэнь Розовое дерево 38000
Шэньчжэнь Лесное хозяйство 73500
Шэньчжэнь Ли Вейкин 45000
Гуанчжоу Шен Лин 132000
Шанхай Sun Zhengfa 63000
Шанхай Мао Чуаньян 106500
Гуанчжоу Чжан Юандуан 147000
Гуанчжоу Чжу Линбо 265000
Шандун Чжан Хонг 34500
Шандун 300000
Гуанчжоу Чжан Чжанбин 32500
Гуанчжоу Цао Ян 205000
Гуанчжоу Чжоу Шудзин 22400
Гуанчжоу Яо Шэн 215000
Шэньчжэнь Го Цзянь 19500
Шэньчжэнь Высокая волна 114000
Шэньчжэнь Лу Вэй 120000

Реализовать код:

Option Explicit

SUB SEERK FOR COLOR ()
    Dim Rng As Range
    Dim RowN As Long
    
         'Очистить область результата
    Range("F2:H" & Rows.Count).Clear
    
    RowN = 1
    For Each Rng In Range(Range("C1"), Cells(Rows.Count, "C").End(xlUp))
                 'Определите, есть ли цвет начинки
        If Rng.Interior.Pattern <> xlNone Then
                         'Скопируйте в область результата
            Intersect(Rng.EntireRow, Columns("A:C")).Copy Cells(RowN, "F")
                         'Линия площади результата +1
            RowN = RowN + 1
        End If
    Next

End Sub

Четкий метод клеточного объекта

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

Диапазон метод ячейки ячейки (диапазон)

    метод

    иллюстрировать

Clear

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

ClearComments

Четкий комментарий к сотовой связи

ClearContents

Очистить содержание ячейки (формула, значение)

ClearFormats

Прозрачный формат блока (включая условный формат, пользовательский формат)

ClearHyperlinks

Очистить супер связь ячейки (невозможно устранить связь, сгенерированную функцией гиперссылки)

ClearNotes;

Четкие заметки и голосовые комментарии

ClearOutline

Чистый дисплей оценки ячейки

Динамически представляет область данных

В этом примере используется начальная точка и конечная точка объекта диапазона, чтобы представлять область данных столбца C. Начальная точка — ячейки C2, а в конечной точке используется конечное свойство для получения последней ячейки данных с данными.

Метод копирования объекта ячейки

Метод копирования объекта ячейки заключается в копировании ячейки (включая содержание, формат, аннотацию и т. Д.) В указанную область. Грамматика:

Rng.Copy [Destination]

Среди них RNG — это ячейка или ячейка, а пункт назначения параметров — целевой объект ячейки. Пункт назначения может быть опущено. При опущенной, это означает, что RNG копируется в буфер обмена, а затем вам нужно использовать метод вставки для вставки. Следовательно, часть копии ячейки в этом случае также может быть завершена следующими предложениями:

Intersect(Rng.EntireRow,Columns("A: C")).Copy
Cells (RowN,"F").Select
ActiveSheet.Paste

Пример кода 2.0

SUB SEER TO Color 1 ()
    Dim Rng As Range
    Dim RowN As Long
    
         'Очистить область результата
    Range("F2:H" & Rows.Count).Clear
    
    RowN = 1
    For Each Rng In Range(Range("C1"), Cells(Rows.Count, "C").End(xlUp))
                 'Определите, есть ли цвет начинки
        If Rng.Interior.Pattern <> xlNone Then
                         'Скопируйте в область результата
            Intersect(Rng.EntireRow, Columns("A:C")).Copy
            Cells(RowN, "F").Select
            ActiveSheet.Paste
                         'Линия площади результата +1
            RowN = RowN + 1
        End If
    Next

End Sub

Селективная паста (неопытная) метод клеточного объекта

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

Rng.PasteSpecial [Paste],[Operation],[SkipBlanks],[Transpose]

Среди них RNG представляет собой область целевой единицы.

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

Вставьте параметр метода PastePecial

    Постоянное количество

    ценить

    иллюстрировать

xlPasteAll

-4104

Вставьте весь контент

xlPasteAllExceptBorders

7

Вставьте все содержимое, кроме рамки

xlPasteAllMergingConditionalFormats

14

Весь контент будет вставлен, и формат условия слияния

xlPasteAllUsingSourceTheme

13

Вставьте весь контент в исходные темы

xlPasteColmnnWidths

8

Вставьте ширину линии копирования

xlPasteComments

-4144

Вставьте аннотацию

xlPasteFormats

-4122

Вставьте формат источника копирования

xlPasteFormulas

-4123

Формула стикера

xlPasteFomulasAndNumberFormats

11

Вставьте формулу и цифровой формат

xlPasteValidation

6

Эффективность вставки

xlPasteValues

-4163

Вставьте значение

xlPasteValuesAndNumberFormats

12

Вставьте значение и цифровой формат

  • Операция параметра является дополнительной операцией для вставки, которая может быть любой из следующей таблицы.

Параметр операции метода PastePecial

    Постоянное количество

       ценить

    иллюстрировать

xlPasteSpecialOperationAdd

2

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

xlPasteSpecialOpeiationDivide

5

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

xlPasteSpecialOperationMultiply .

4

Скопировать данные, умноженные на значение в целевом блоке

xlPasteSpecialOperationNone

-4142

Не выполняйте каких -либо расчетов в операции вставки

xlPasteSpecialOperationSubtract

 3

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

  • Параметр Skipblanks указывает, пропустить ли пропущенную ячейку. Если она истина, это означает, что пустой блок в буфере обмена не скопируется в целевую область.

  • Перевод параметра указывает, следует ли его сдавить, если это правда, это означает преобразование.

Метод Pastepecial, по сути, представляет собой основную работу селективной вставки рабочего дня. Соответствующая связь между параметрами параметров и параметров работы показана на рисунке.

Понравилась статья? Поделить с друзьями:
  • Excel vba найти часть текста в тексте
  • Excel vba окно книги
  • Excel vba окно immediate
  • Excel vba найти текст на листе
  • Excel vba одинаковые строки