cybereug
Гость |
необходимо в excel найти в столбце 1 ячейку синего цвета и скопировать ее в столбец 2 во все строки до нахождения следующей синей ячейки в столбце 1. Далее опять копируется синяя ячейка до нахожденя следующей синей. Заранее спасибо! |
||
|
HandKot
Молодой специалист
|
Сервис-Макрос-Начать запись Потом выбираешь Правка-Найти Формат, указываешь цвет ячейки для поиска После посмотри полученный код и подгони его под себя |
||
I Have Nine Lives You Have One Only |
PooH
Глобальный модератор … и можно без хлеба! |
а зачем тут синию искать? иди по столбцу и как наткнулся на синию, начинай её вставлять во второй столбец для всех «не синих» |
||
Удачного всем кодинга! -=x[PooH]x=- |
cybereug
Гость |
а как это програмно сделать? вопрос в том что синие ячейки имеют разные значения и значение должно меняться после нахождения следующей синей ячейки |
||
|
cybereug
Гость |
вот в приложении примерно что нужно сделать и что должно получиться |
RomCom |
Sub Макрос1() ‘находим первую синию ячейку ‘ну и собственно вставка |
||
R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine |
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” и находим в левом списке пункт “Надстройки”:
Выбираем в основном окне строчку “Пакет анализа — VBA” и жмем кнопочку “Перейти” в самом низу окна. Откроется еще одно окошко со списком доступных под Excel расширений (надстроек). Снова выбираем в этом списке “Пакет анализа — VBA” и соглашаемся, что хотим установить его, нажав кнопку “ОК”:
Потребуется установочный диск с Microsoft Office на нем (или же подключение к Интернет) чтобы программа получила необходимые пакеты для инсталляции. Если установка прошла успешно, то в “Ленте” появиться пункт “Разработчик” (Excel 2010). Можно перейти в него через эту панель или же с помощью сочетания клавиш Alt + F11.
Появиться окно, в котором выполняется написание кода на языке VBA, то есть фактически создаются пользовательские функции. Я писать их не буду, так как языка VBA не знаю и знать особого желания нет (все знать невозможно).
Вставка готовых функций в Excel VBA
Но есть готовые решения, которые я вставлю в виде кода с помощью меню “Insert — Module”. Просто берем отсюда код функций и вставляем в свой Excel. Затем сохраняем файл Excel с поддержкой VBA (макросов) и все готово для дальнейшей работы.
Вставленные функции появятся в списке формул таблицы:
Ниже представлен готовый код двух функций на 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)
Думаю, что больше сказать по поводу создания (точнее — вставки готового решения) пользовательских функций и способа выборки ячеек в таблице по цвету их заливки мне нечего.
Содержание
- Excel — выборка ячеек по цвету заливки
- December 15, 2013
- Режим “Разработчик” в Excel
- Вставка готовых функций в Excel VBA
- Функция подсчета количества ячеек
- Функция подсчета суммы ячеек
- Описание рабочей формулы
- Красивая функция trackBy
- Vba excel поиск ячейки по цвету
- Как сделать фильтр по цвету в Excel с помощью макросов VBA
- Скачать файл
- Фильтры цвета и значков в Excel
- Фильтры цвета и значков в VBA
- Фильтры и типы данных
- VBA Excel. Метод Find объекта Range
- Предназначение и синтаксис метода Range.Find
- Синтаксис метода Range.Find
- Параметры метода Range.Find
- Знаки подстановки для поисковой фразы
- Простые примеры
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 | |||||||||||||||||||||||
|
Метод 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:
|
LookAt | Поиск частичного или полного совпадения. Список констант xlLookAt:
|
SearchOrder | Определяет способ поиска. Список констант xlSearchOrder:
|
SearchDirection | Определяет направление поиска. Список констант xlSearchDirection:
|
MatchCase | Определяет учет регистра:
|
MatchByte | Условия поиска при использовании двухбайтовых кодировок:
|
SearchFormat | Формат поиска – используется вместе со свойством Application.FindFormat. |
* Примечания имеют две константы с одним значением. Проверяется очень просто: MsgBox xlComments
и MsgBox xlNotes
.
В справке Microsoft тип данных всех параметров, кроме SearchDirection, указан как Variant.
Знаки подстановки для поисковой фразы
Условные знаки в шаблоне поисковой фразы:
- ? – знак вопроса обозначает любой отдельный символ;
- * – звездочка обозначает любое количество любых символов, в том числе ноль символов;
- ~ – тильда ставится перед ?, * и ~, чтобы они обозначали сами себя (например, чтобы тильда в шаблоне обозначала сама себя, записать ее нужно дважды: ~~).
Простые примеры
При использовании метода Range.Find в VBA Excel необходимо учитывать следующие нюансы:
- Так как этот метод возвращает объект Range (в виде одной ячейки), присвоить его можно только объектной переменной, объявленной как Variant, Object или Range, при помощи оператора Set.
- Если поисковая фраза в заданном диапазоне найдена не будет, метод 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