Итоги в конце таблицы и преобразование в число данных - VBA

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

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

Есть файл, который выгружает система. Т.к. книг с одинаковым содержимым много, то для удобства пользователя сделала загрузку содержимого через макрос. А дальше необходимо, что бы применялось условное форматирование в виде светофора и вниз таблицы добавлялись итоги. Сколько всего человек, сколько прошло тест и средние значения по результатам в%. Где-то закралась ошибка и несколько смущает зависание в процессе преобразования данных в число. Помогите пожалуйста! Данные в таблице Оценки Сам макрос вот:
Листинг программы
  1. Option Explicit
  2. Sub bb()
  3. Dim FilesToOpen
  4. Dim x As Integer
  5. Dim importWB As Workbook, wb As Workbook
  6. Set wb = ActiveWorkbook
  7. Application.ScreenUpdating = False 'отключаем обновление экрана для скорости
  8. 'вызываем диалог выбора файлов для импорта
  9. FilesToOpen = Application.GetOpenFilename _
  10. (FileFilter:="All files (*.*), *.*", _
  11. MultiSelect:=True, Title:="Files to Merge")
  12. If TypeName(FilesToOpen) = "Boolean" Then
  13. MsgBox "Не выбрано ни одного файла!"
  14. Exit Sub
  15. End If
  16. 'проходим по всем выбранным файлам
  17. x = 1
  18. While x <= UBound(FilesToOpen)
  19. Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
  20. importWB.Sheets().Copy After:=wb.Sheets(wb.Sheets.Count)
  21. importWB.Close savechanges:=False
  22. x = x + 1
  23. Wend
  24. Application.ScreenUpdating = True
  25.  
  26. '
  27. ' Светофор Макрос
  28. '
  29. Columns("H:H").Select
  30. Selection.Delete Shift:=xlToLeft
  31. Rows("1:1").Select
  32. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  33. Rows("2:2").Select
  34. With Selection
  35. .HorizontalAlignment = xlGeneral
  36. .VerticalAlignment = xlBottom
  37. .WrapText = True
  38. .Orientation = 0
  39. .AddIndent = False
  40. .IndentLevel = 0
  41. .ShrinkToFit = False
  42. .ReadingOrder = xlContext
  43. .MergeCells = False
  44. End With
  45. Rows("2:2").Select
  46. Columns("A:A").ColumnWidth = 37
  47. Columns("B:B").Select
  48. Selection.ColumnWidth = 12
  49. Columns("D:G").Select
  50. Selection.ColumnWidth = 24
  51. Columns("H:H").Select
  52. Selection.ColumnWidth = 15
  53. Range("A2").Select
  54. ActiveCell.FormulaR1C1 = "ФИО"
  55. Range("B2").Select
  56. ActiveCell.FormulaR1C1 = "Таб.№"
  57. Range("C3").Select
  58. Selection.Copy
  59. Range("A1").Select
  60. ActiveSheet.Paste
  61. Columns("B:G").Select
  62. Selection.NumberFormat = "General"
  63. Selection.Value = Selection.Value
  64.  
  65. Columns("C:C").Select
  66. Application.CutCopyMode = False
  67. Selection.Delete Shift:=xlToLeft
  68. Range("A1:F2").Select
  69. With Selection
  70. .HorizontalAlignment = xlCenter
  71. .VerticalAlignment = xlBottom
  72. .Orientation = 0
  73. .AddIndent = False
  74. .IndentLevel = 0
  75. .ShrinkToFit = False
  76. .ReadingOrder = xlContext
  77. .MergeCells = False
  78. End With
  79. With Selection
  80. .HorizontalAlignment = xlCenter
  81. .VerticalAlignment = xlCenter
  82. .Orientation = 0
  83. .AddIndent = False
  84. .IndentLevel = 0
  85. .ShrinkToFit = False
  86. .ReadingOrder = xlContext
  87. .MergeCells = False
  88. End With
  89. Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  90. Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  91. With Selection.Borders(xlEdgeLeft)
  92. .LineStyle = xlContinuous
  93. .ColorIndex = 0
  94. .TintAndShade = 0
  95. .Weight = xlThin
  96. End With
  97. With Selection.Borders(xlEdgeTop)
  98. .LineStyle = xlContinuous
  99. .ColorIndex = 0
  100. .TintAndShade = 0
  101. .Weight = xlThin
  102. End With
  103. With Selection.Borders(xlEdgeBottom)
  104. .LineStyle = xlContinuous
  105. .ColorIndex = 0
  106. .TintAndShade = 0
  107. .Weight = xlThin
  108. End With
  109. With Selection.Borders(xlEdgeRight)
  110. .LineStyle = xlContinuous
  111. .ColorIndex = 0
  112. .TintAndShade = 0
  113. .Weight = xlThin
  114. End With
  115. With Selection.Borders(xlInsideVertical)
  116. .LineStyle = xlContinuous
  117. .ColorIndex = 0
  118. .TintAndShade = 0
  119. .Weight = xlThin
  120. End With
  121. With Selection.Borders(xlInsideHorizontal)
  122. .LineStyle = xlContinuous
  123. .ColorIndex = 0
  124. .TintAndShade = 0
  125. .Weight = xlThin
  126. End With
  127. With Selection.Interior
  128. .Pattern = xlSolid
  129. .PatternColorIndex = xlAutomatic
  130. .ThemeColor = xlThemeColorAccent5
  131. .TintAndShade = 0.399975585192419
  132. .PatternTintAndShade = 0
  133. End With
  134. Selection.Font.Bold = True
  135. Columns("C:F").Select
  136. Selection.FormatConditions.AddIconSetCondition
  137. Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
  138. With Selection.FormatConditions(1)
  139. .ReverseOrder = False
  140. .ShowIconOnly = False
  141. .IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
  142. End With
  143. With Selection.FormatConditions(1).IconCriteria(2)
  144. .Type = xlConditionValueNumber
  145. .Value = 0.5
  146. .Operator = 7
  147. End With
  148. With Selection.FormatConditions(1).IconCriteria(3)
  149. .Type = xlConditionValueNumber
  150. .Value = 0.8
  151. .Operator = 7
  152. End With
  153. Range("ТаблицаСВычислениями").Copy Cells(ActiveSheet.UsedRange.Rows.Count + 2, 1)
  154. End Sub

Решение задачи: «Итоги в конце таблицы и преобразование в число данных»

textual
Листинг программы
  1. Sheets("Итоги").[A1].CurrentRegion.Copy ActiveSheet.[A1].End(xlDown)(2)

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


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

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

10   голосов , оценка 3.9 из 5

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

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

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