Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78

Макрос для поиска определенного столбца в таблице по названию столбца и применения к нему условного форматирования

06.07.2021, 16:13. Показов 5596. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Мне очень нужно написать макрос для поиска определенного столбца в таблице по названию столбца и применения к нему условного форматирования по диапазону до последнего значения.

спасибо заранее!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2021, 16:13
Ответы с готовыми решениями:

Присвоить переменной типа string значение определенного столбца в таблице
Здравствуйте! Как на С# присвоить переменной типа string значение определенного столбца в таблице?

Зависимость одного столбца от другого столбца в одной таблице
Здравствуйте! Помогите с решением задачи (приложил). В 1-ом задание есть пункт в конце "ID_Parent int null - ссылка на столбец ID в...

Как получить SUM определённого столбца, при том что бы запрос был к целой таблице?
<?php $db->Query("SELECT * FROM db_insert WHERE user_id = '$user_id'"); $timer2 = $db->FetchArray(); { ?> тут допустим...

14
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
06.07.2021, 16:14  [ТС]
пример во вложении
Вложения
Тип файла: xlsx Найти.xlsx (9.0 Кб, 25 просмотров)
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4157 / 2446 / 508
Регистрация: 13.12.2016
Сообщений: 8,313
Записей в блоге: 5
06.07.2021, 16:29
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Макрос1()
    Cells.Find(What:="Сирень", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    ActiveCell.Offset(1, 0).Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub
1
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
06.07.2021, 16:37
Запись макроса записала:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Макрос()
Dim r As Range
 
Set r = Rows(1).Find("Сирень", , xlValues, xlWhole)
    
If Not r Is Nothing Then
 With Range(r.Offset(1, 0), r.Offset(1, 0).End(xlDown)(1))
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
        Formula1:="=1"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1).Font
        .Color = -16383844
        .TintAndShade = 0
    End With
    With .FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 13551615
        .TintAndShade = 0
    End With
    .FormatConditions(1).StopIfTrue = False
End With
End If
 
End Sub
Определение последней делал по приложенному примеру, можете поменять если на практике данные другие.
1
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
07.07.2021, 12:12  [ТС]
Добрый день!
Спасибо большое!
Макрос работает отлично, но когда у меня после "Сирени", остается только одна строчка, форматируется полностью весть диапазон (B2:B10456000) и выделяется красным весь столбец. Можно ли это и исправить как-нибудь?
Спасибо большое заранее!
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
07.07.2021, 12:24
Так проверьте сколько остаётся, какая строка у End(xlDown), и соотвественно реагируйте в коде.
0
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
07.07.2021, 12:28  [ТС]
А как проверить? У меня каждый раз при выгрузке разное количество.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
07.07.2021, 12:32
Цитата Сообщение от Hugo121 Посмотреть сообщение
какая строка у End(xlDown)
- вот это проверьте.
0
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
07.07.2021, 13:42  [ТС]
У меня диапазон всегда начинается со второй строчки. Просто он может быть представлен одной ячейкой или диапазоном ячеек, каждый раз по-разному.

Добавлено через 55 минут
И все-таки я не понимаю как прописать, чтобы макрос брал и одну ячейку и несколько в диапазоне.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
08.07.2021, 09:57
Лучший ответ Сообщение было отмечено Alexsp85 как решение

Решение

Чуть подкоректировал:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Макрос()
Dim r As Range
 
Set r = Rows(1).Find("Сирень", , xlValues, xlWhole)
    
If Not r Is Nothing Then
If r.End(xlDown)(1).Row < r.Parent.Rows.Count Then
 
 With Range(r.Offset(1, 0), r.End(xlDown)(1))
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
        Formula1:="=1"
    .FormatConditions(.FormatConditions.Count).SetFirstPriority
    With .FormatConditions(1).Font
        .Color = -16383844
        .TintAndShade = 0
    End With
    With .FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 13551615
        .TintAndShade = 0
    End With
    .FormatConditions(1).StopIfTrue = False
End With
End If
End If
 
End Sub
1
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
09.07.2021, 11:18  [ТС]
Спасибо Вам огромное!
Макрос работает отлично!!!
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2021, 11:25
Но учтите - это End(xlDown) смотрит данные сверху вниз до первой пустоты.
Потому что данные такие показали, и без пояснений.
Вообще обычно смотрят с последней строки вверх, смотря конечно какая задача и данные.
0
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
09.07.2021, 13:17  [ТС]
Ок, спасибо за комментарий.
0
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
28.07.2021, 12:23  [ТС]
Добрый день!
Скажите пожалуйста, а как прописать в макросе, чтобы смотрел с последней строчки, а то xlDown не совсем корректно работает.

Спасибо заранее!

Добавлено через 11 минут
Прошу прощения,
проблема решена!

Добавлено через 46 минут
Прошу прощения, все-таки не получается.
Скажите пожалуйста, а как прописать в макросе, чтобы смотрел с последней строчки, а то xlDown не совсем корректно работает. Есть пустые ячейки.
0
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 78
24.11.2021, 10:36  [ТС]
Добрый день! Скажите пожалуйста, а как прописать с помощью Сообщения msgbox если увидел в столбце пустоты, выдал сообщение ничего не найдено
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2021, 10:36
Помогаю со студенческими работами здесь

Свойство .Range для умной таблицы. Обращение по названию столбца
Добрый день. На листе имеется умная таблица с заголовками. При работе с ней макросами, я обращаюсь к ней так: WTName =...

Для каждого столбца матрицы с четным номером найти сумму его элементов (без использования условного оператора)
Дана матрица размера M × N. Для каждого столбца матрицы с четным номером (2, 4, …) найти сумму его элементов. Условный оператор не...

Посчитать сумму строк для определенного столбца?
Есть таблица: Как посчитать сумму полей post_id, т.е. для post_id = 1 будет равна сумма 3, для post_id =2 сумма будет равна 4. ...

Как сделать тултип для определенного столбца ListView
Идея такова. Есть список (динамический), и приближая к которому курсор - отображается 2ая(3ая) часть того пункта на который указывает...

В каждой из матриц: A (5 строк, 4 столбца) и В (4 строки, 3 столбца) поменять местами два столбца
В каждой из матриц: A (5 строк, 4 столбца) и В (4 строки, 3 столбца) поменять местами два столбца: в матрице А - столбцы 2 и 4, в матрице В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru