Мне приходится часто, занимаясь мониторингом на сайте http://monitoring-mo.ru, снимать аналитику по отдельным таблицам по всем учреждениям района.
При этом формируется таблица Excel, в которой обычно сверху стоит наименование таблицы, далее шапка и данные.
Левый первый столбец – это полное наименование ОУ, второй столбец период, а далее идут данные, Таблица организована не достаточно хорошо.
- Нет разрыва строк между названием таблицы и шапкой;
- 2 первых ячейки шапки объединены и нет наименования ячейки;
- Название ОУ содержит впереди своего имени название района и косую черту.
Мне, как правило, нужно отделить таблицу от названия, вставив строку
Rows(“2:2”).Select
Selection.Insert Shift:=xlDown
Затем надо разделить две ячейки
Range(“A3:B3”).Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Selection.UnMerge
Здесь можно обойтись на самом деле всего 2-мя командами – первой и последней. Всё остальное создано макрорекордером, которым я пользуюсь часто.
В первые 2 ячейки шапки вводим наименования.
Range(“A3”).Select
ActiveCell.FormulaR1C1 = “Наименование ОУ”
Range(“B3”).Select
ActiveCell.FormulaR1C1 = “Период”
Убираем далее название района в наименованиях ОУ
Columns(“A:A”).Select
Range(“A3”).Activate
Selection.Replace What:=”Орехово-Зуевский муниципальный район / “, _
Replacement:=””, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
False, SearchFormat:=False, ReplaceFormat:=False
А вот далее возникает проблема с выделением диапазонов. Мне нужно бывает выделить не весь диапазон, что можно сделать командой
adres = Range(“a3”).CurrentRegion.Address
или получить объект Range с этим диапазоном
Set tbl = ActiveCell.CurrentRegion
Играя с диапазоном, изменяя количество строк и столбцов, я могу выделить любую часть таблицы, над которой могу производить любые действия.
Чаще всего это выделение цветом диапазона ячеек, или изменение шрифта или выделение границ. Можно проводить различные суммирования и выборки.
Для работы с диапазонами на активном листе можно, используя также команду UsedRange. например: ActiveSheet.UsedRange.Address или ActiveSheet.UsedRange.Select. А получив адрес, можно его всячески изменять как и в команде UsedRange.
Пример выделения диапазона ячеек в файле Проверка работы с диапазоном на DropBox