Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. Sub FillValueForLetter(letter As Integer, value As Integer)
  2. Dim index As Integer
  3.  
  4. ' Вычисляем индекс столбца при помощи формулы
  5. index = letter - Asc("А") + 1
  6.  
  7. ' Вписываем букву, соответствующую коду letter
  8. Worksheets("Лист2").Cells(1, index) = Chr(letter)
  9.  
  10. ' Вписываем число найденных слов
  11. Worksheets("Лист2").Cells(2, index) = value
  12. End Sub
  13. Function WordStartsWithLetter(letter As Integer, word As String) As Integer
  14. Dim startsWithLetter As String
  15.  
  16. ' Выделяем первую букву
  17. startsWithLetter = Left(word, 1)
  18.  
  19. ' Приводим букву к верхнему регистру (a -> A, A -> A)
  20. startsWithLetter = UCase(startsWithLetter)
  21.  
  22. ' Сравниваем код буквы с letter
  23. If (Asc(startsWithLetter) = letter) Then
  24. WordStartsWithLetter = 1
  25. Else
  26. WordStartsWithLetter = 0
  27. End If
  28. End Function
  29. Function CountWordsInCell(letter As Integer, cell As range) As Integer
  30. Dim words() As String
  31. Dim i As Integer
  32. Dim counter As Integer
  33.  
  34. ' Разбиваем текст ячейки на слова,
  35. words = Split(cell.text, " ")
  36.  
  37. ' Пробегаем по всем словам
  38. For i = LBound(words) To UBound(words)
  39.  
  40. ' Увеличиваем счетчик на единицу, если слово начинается с буквы letter
  41. counter = counter + WordStartsWithLetter(letter, words(i))
  42. Next i
  43. CountWordsInCell = counter
  44. End Function
  45. Function CountWordsInCells(letter As Integer) As Integer
  46. Dim numberOfRows, numberOfColumns, counter, row, column As Integer
  47. numberOfRows = 33
  48. numberOfColumns = 3
  49. counter = 0
  50.  
  51. ' В каждой строке с 1 до 33
  52. For row = 1 To numberOfRows
  53. ' В каждом столбце с 1 до 3
  54. For column = 1 To numberOfColumns
  55. Dim subcounter As Integer
  56.  
  57. ' Вычисляем число слов, начинающихся на букву letter, в строке row, столбце column
  58. subcounter = CountWordsInCell(letter, Worksheets("Лист1").Cells(row, column))
  59.  
  60. ' Увеличиваем счетчик найденных слов на
  61. counter = counter + subcounter
  62. Next column
  63. Next row
  64.  
  65. CountWordsInCells = counter
  66. End Function
  67. Sub BuildTable()
  68. Dim letter As Integer
  69.  
  70. ' Для каждой буквы от А до Я
  71. For letter = Asc("А") To Asc("Я")
  72. Dim counter As Integer
  73.  
  74. ' Подсчитываем число слов во всех ячейках, начинающихся на эту букву
  75. counter = CountWordsInCells(letter)
  76.  
  77. ' Выводим результат на второй лист
  78. Call FillValueForLetter(letter, counter)
  79. Next letter
  80. End Sub
  81. Sub BuildChart()
  82. ActiveSheet.Shapes.AddChart.Select
  83. With ActiveChart
  84. .ChartType = xlColumnClustered
  85. .SetSourceData Source:=range("Лист2!$A$1:$AF$2")
  86. .HasTitle = True
  87. .ChartTitle.text = "Частоты первых букв в словах"
  88. End With
  89. End Sub
  90. Sub Task3()
  91. Call BuildTable
  92. Call BuildChart
  93. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement