Excel: Макрос на обработку таблицы - VBA

Узнай цену своей работы

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

Всем доброго времени суток! Есть такая вот таблица(см. main.7z) её нужно обработать. Идёт обход, в каждом обходе должны пройти все точки(этажи), каждый обход не превышает по длительности час. Всего точек(этажей) 16. Нужно, что бы после каждого завершенного обхода вставлялась пустая строка. Нужно проверка на каждый этаж из списка этажей, и если нет какого-либо этажа в обходе, нужно вставлять строку с надписью "нет обхода". Начал это делать, макросом создаю колонку с полным списком этажей. Удаляю ненужные столбцы. А вот как сделать проверку на проход по этажу и вставлять через каждый обход всех этажей пустую строчку не пойму. В конечном итоге должно получиться как во втором вложении(cм. main2.7z)
Листинг программы
  1. Sub Макрос3()
  2. '
  3. ' Макрос3 Макрос
  4. '
  5. '
  6.  
  7. ''''''''''''''''''''''''''''''''''''''''''''''''
  8. Columns("D:D").Select
  9. Range("D1192").Activate
  10. Selection.Delete Shift:=xlToLeft
  11. Selection.Delete Shift:=xlToLeft
  12. Columns("E:E").Select
  13. Range("E1192").Activate
  14. Selection.Delete Shift:=xlToLeft
  15. Selection.Delete Shift:=xlToLeft
  16. Selection.Delete Shift:=xlToLeft
  17. Selection.Delete Shift:=xlToLeft
  18. Columns("B:B").ColumnWidth = 20.86
  19. Columns("A:A").ColumnWidth = 16.71
  20. Columns("C:C").ColumnWidth = 31.29
  21. Range("F1194").Select
  22.  
  23. Dim ra As Range, delra As Range, TextS As String
  24. Application.ScreenUpdating = False
  25. TextS = "Взятие зоны охраны"
  26.  
  27. For Each ra In ActiveSheet.UsedRange.Rows
  28. If Not ra.Find(TextS, , xlValues, xlPart) Is Nothing Then
  29. If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
  30. End If
  31. Next
  32. If Not delra Is Nothing Then delra.EntireRow.Delete
  33. '''''''''''''''''''
  34. Dim ra1 As Range, delra1 As Range, TextD As String
  35. Application.ScreenUpdating = False
  36. TextD = "Невзятие"
  37.  
  38. For Each ra1 In ActiveSheet.UsedRange.Rows
  39. If Not ra1.Find(TextD, , xlValues, xlPart) Is Nothing Then
  40. If delra1 Is Nothing Then Set delra1 = ra1 Else Set delra1 = Union(delra1, ra1)
  41. End If
  42. Next
  43. If Not delra1 Is Nothing Then delra1.EntireRow.Delete
  44. ''''''''''''''''''''''''''''''''''''''''''
  45. Dim ra2 As Range, delra2 As Range, TextN As String
  46. Application.ScreenUpdating = False
  47. TextN = "Запрос на взятие шлейфа"
  48.  
  49. For Each ra2 In ActiveSheet.UsedRange.Rows
  50. If Not ra2.Find(TextN, , xlValues, xlPart) Is Nothing Then
  51. If delra2 Is Nothing Then Set delra2 = ra2 Else Set delra2 = Union(delra2, ra2)
  52. End If
  53. Next
  54. If Not delra2 Is Nothing Then delra2.EntireRow.Delete
  55. ''''''''''''''''''''''''''''''''
  56. Dim ra3 As Range, delra3 As Range, TextM As String
  57. Application.ScreenUpdating = False
  58. TextM = "Взятие раздела"
  59.  
  60. For Each ra3 In ActiveSheet.UsedRange.Rows
  61. If Not ra3.Find(TextM, , xlValues, xlPart) Is Nothing Then
  62. If delra3 Is Nothing Then Set delra3 = ra3 Else Set delra3 = Union(delra3, ra3)
  63. End If
  64. Next
  65. If Not delra3 Is Nothing Then delra3.EntireRow.Delete
  66. Range("N4").Select
  67. ActiveCell.FormulaR1C1 = "9 этаж Обход"
  68. Range("N5").Select
  69. ActiveCell.FormulaR1C1 = "8 этаж Обход"
  70. Range("N6").Select
  71. ActiveCell.FormulaR1C1 = "7 этаж Обход"
  72. Range("N7").Select
  73. ActiveCell.FormulaR1C1 = "6 этаж Обход."
  74. Range("N8").Select
  75. ActiveCell.FormulaR1C1 = "5 этаж Обход"
  76. Range("N9").Select
  77. ActiveCell.FormulaR1C1 = "4 этаж Обход"
  78. Range("N10").Select
  79. ActiveCell.FormulaR1C1 = "3 этаж Обход"
  80. Range("N11").Select
  81. ActiveCell.FormulaR1C1 = "2 этаж Обход"
  82. Range("N12").Select
  83. ActiveCell.FormulaR1C1 = "Подвал Обход"
  84. Range("N13").Select
  85. ActiveCell.FormulaR1C1 = "МКС Обход"
  86. Range("N14").Select
  87. ActiveCell.FormulaR1C1 = " 0 этаж Парковка Обход."
  88. Range("N15").Select
  89. ActiveCell.FormulaR1C1 = " 1 этаж Парковка Обход."
  90. Range("N16").Select
  91. ActiveCell.FormulaR1C1 = "13 этаж Улья-ва Обход."
  92. Range("N17").Select
  93. ActiveCell.FormulaR1C1 = "3 этаж Улья-ва Обход."
  94. Range("N18").Select
  95. ActiveCell.FormulaR1C1 = "10 этаж Улья-ва Обход."
  96. Range("N19").Select
  97. ActiveCell.FormulaR1C1 = "14 этаж Улья-ва Обход."
  98. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  99. End Sub

Решение задачи: «Excel: Макрос на обработку таблицы»

textual
Листинг программы
  1.                     Cells(k, 3).Interior.color = 65535

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы