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

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. December 15, 2013
  3. Режим “Разработчик” в Excel
  4. Вставка готовых функций в Excel VBA
  5. Функция подсчета количества ячеек
  6. Функция подсчета суммы ячеек
  7. Описание рабочей формулы
  8. Красивая функция trackBy
  9. Vba excel поиск ячейки по цвету
  10. Как сделать фильтр по цвету в Excel с помощью макросов VBA
  11. Скачать файл
  12. Фильтры цвета и значков в Excel
  13. Фильтры цвета и значков в VBA
  14. Фильтры и типы данных
  15. VBA Excel. Метод Find объекта Range
  16. Предназначение и синтаксис метода Range.Find
  17. Синтаксис метода Range.Find
  18. Параметры метода Range.Find
  19. Знаки подстановки для поисковой фразы
  20. Простые примеры

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

Источник

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(отражающую документ на который ссылается функция)

Источник

Как сделать фильтр по цвету в Excel с помощью макросов VBA

Итог: узнайте, как применять фильтры цвета и значков в VBA. Включает примеры фильтрации по цвету шрифта, цвету заливки и значкам условного форматирования.

Уровень мастерства: Средний

Скачать файл

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

VBA AutoFilters Guide.xlsm (100.5 KB)

Фильтры цвета и значков в Excel

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

Меню «Фильтр по цвету» появляется, когда столбец содержит какой-либо шрифт или заливку. Оно также появляется, когда столбец содержит значки, созданные условным форматированием. Мы также можем использовать VBA для применения этих фильтров.

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

Фильтры цвета и значков в VBA

Фильтры и типы данных

Параметры раскрывающегося меню фильтра изменяются в зависимости от типа данных в столбце. У нас есть разные фильтры для текста, чисел, дат и цветов. Это создает МНОГО различных комбинаций операторов и критериев для каждого типа фильтра.

Я создал отдельные статьи для каждого из этих типов фильтров. Статьи содержат пояснения и примеры кода VBA.

Файл в разделе загрузок выше содержит все эти примеры кода в одном месте. Вы можете добавить его в свою личную книгу макросов и использовать макросы в своих проектах.

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

Источник

VBA Excel. Метод Find объекта Range

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

Предназначение и синтаксис метода Range.Find

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

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

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, если поисковая фраза не найдена.

Источник

Adblock
detector

Метод 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

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

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

Необходимо в 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

Оглавление

Пример:

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

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

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

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

Пример кода 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, по сути, представляет собой основную работу селективной вставки рабочего дня. Соответствующая связь между параметрами параметров и параметров работы показана на рисунке.

Формулировка задачи:

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

Код к задаче: «Поиск и удаление значений ячеек заданного цвета»

textual

Sub Del_Grey_Rows_Value()
   Dim i As Variant
   Dim rRange As Excel.Range
    Set rRange = Selection
    For Each i In rRange
       If i.Interior.Color = 12835293 Then i.ClearContents
    Next i
  End Sub

Полезно ли:

12   голосов , оценка 4.333 из 5

Понравилась статья? Поделить с друзьями:
  • Excel vba окно переменных
  • Excel vba найти ячейки по цвету excel
  • Excel vba окно ошибки
  • Excel vba найти часть текста в тексте
  • Excel vba окно книги