Excel: Макрос на обработку таблицы - VBA
Формулировка задачи:
Всем доброго времени суток!
Есть такая вот таблица(см. main.7z) её нужно обработать.
Идёт обход, в каждом обходе должны пройти все точки(этажи), каждый обход не превышает по длительности час.
Всего точек(этажей) 16. Нужно, что бы после каждого завершенного обхода вставлялась пустая строка.
Нужно проверка на каждый этаж из списка этажей, и если нет какого-либо этажа в обходе, нужно вставлять строку с надписью "нет обхода".
Начал это делать, макросом создаю колонку с полным списком этажей. Удаляю ненужные столбцы. А вот как сделать проверку на проход по этажу и вставлять через каждый обход всех этажей пустую строчку не пойму. В конечном итоге должно получиться как во втором вложении(cм. main2.7z)
Листинг программы
- Sub Макрос3()
- '
- ' Макрос3 Макрос
- '
- '
- ''''''''''''''''''''''''''''''''''''''''''''''''
- Columns("D:D").Select
- Range("D1192").Activate
- Selection.Delete Shift:=xlToLeft
- Selection.Delete Shift:=xlToLeft
- Columns("E:E").Select
- Range("E1192").Activate
- Selection.Delete Shift:=xlToLeft
- Selection.Delete Shift:=xlToLeft
- Selection.Delete Shift:=xlToLeft
- Selection.Delete Shift:=xlToLeft
- Columns("B:B").ColumnWidth = 20.86
- Columns("A:A").ColumnWidth = 16.71
- Columns("C:C").ColumnWidth = 31.29
- Range("F1194").Select
- Dim ra As Range, delra As Range, TextS As String
- Application.ScreenUpdating = False
- TextS = "Взятие зоны охраны"
- For Each ra In ActiveSheet.UsedRange.Rows
- If Not ra.Find(TextS, , xlValues, xlPart) Is Nothing Then
- If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
- End If
- Next
- If Not delra Is Nothing Then delra.EntireRow.Delete
- '''''''''''''''''''
- Dim ra1 As Range, delra1 As Range, TextD As String
- Application.ScreenUpdating = False
- TextD = "Невзятие"
- For Each ra1 In ActiveSheet.UsedRange.Rows
- If Not ra1.Find(TextD, , xlValues, xlPart) Is Nothing Then
- If delra1 Is Nothing Then Set delra1 = ra1 Else Set delra1 = Union(delra1, ra1)
- End If
- Next
- If Not delra1 Is Nothing Then delra1.EntireRow.Delete
- ''''''''''''''''''''''''''''''''''''''''''
- Dim ra2 As Range, delra2 As Range, TextN As String
- Application.ScreenUpdating = False
- TextN = "Запрос на взятие шлейфа"
- For Each ra2 In ActiveSheet.UsedRange.Rows
- If Not ra2.Find(TextN, , xlValues, xlPart) Is Nothing Then
- If delra2 Is Nothing Then Set delra2 = ra2 Else Set delra2 = Union(delra2, ra2)
- End If
- Next
- If Not delra2 Is Nothing Then delra2.EntireRow.Delete
- ''''''''''''''''''''''''''''''''
- Dim ra3 As Range, delra3 As Range, TextM As String
- Application.ScreenUpdating = False
- TextM = "Взятие раздела"
- For Each ra3 In ActiveSheet.UsedRange.Rows
- If Not ra3.Find(TextM, , xlValues, xlPart) Is Nothing Then
- If delra3 Is Nothing Then Set delra3 = ra3 Else Set delra3 = Union(delra3, ra3)
- End If
- Next
- If Not delra3 Is Nothing Then delra3.EntireRow.Delete
- Range("N4").Select
- ActiveCell.FormulaR1C1 = "9 этаж Обход"
- Range("N5").Select
- ActiveCell.FormulaR1C1 = "8 этаж Обход"
- Range("N6").Select
- ActiveCell.FormulaR1C1 = "7 этаж Обход"
- Range("N7").Select
- ActiveCell.FormulaR1C1 = "6 этаж Обход."
- Range("N8").Select
- ActiveCell.FormulaR1C1 = "5 этаж Обход"
- Range("N9").Select
- ActiveCell.FormulaR1C1 = "4 этаж Обход"
- Range("N10").Select
- ActiveCell.FormulaR1C1 = "3 этаж Обход"
- Range("N11").Select
- ActiveCell.FormulaR1C1 = "2 этаж Обход"
- Range("N12").Select
- ActiveCell.FormulaR1C1 = "Подвал Обход"
- Range("N13").Select
- ActiveCell.FormulaR1C1 = "МКС Обход"
- Range("N14").Select
- ActiveCell.FormulaR1C1 = " 0 этаж Парковка Обход."
- Range("N15").Select
- ActiveCell.FormulaR1C1 = " 1 этаж Парковка Обход."
- Range("N16").Select
- ActiveCell.FormulaR1C1 = "13 этаж Улья-ва Обход."
- Range("N17").Select
- ActiveCell.FormulaR1C1 = "3 этаж Улья-ва Обход."
- Range("N18").Select
- ActiveCell.FormulaR1C1 = "10 этаж Улья-ва Обход."
- Range("N19").Select
- ActiveCell.FormulaR1C1 = "14 этаж Улья-ва Обход."
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- End Sub
Решение задачи: «Excel: Макрос на обработку таблицы»
textual
Листинг программы
- Cells(k, 3).Interior.color = 65535
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д