Поиск моды и приближённых к моде подстрок массива VBA - VBA/Excel
Формулировка задачи:
Обрисую ситуацию:
Имеется массив(вектор) строкового типа, содержащий наборы чисел.
Колличество символов в каждой строке кратно пяти.
В отдельно взятой строке пятисимвольные подстроки не повторяются.
В наборы символов включены только
1
,2
,3
и4
. И порядок их хаотичен.ПРИМЕР
(жирный щрифт для лучшего восприятия):
0
1111122222
3333344444
1121112341
3343344144
1
12341
1111122222
333332
2214444444
441213
22222
... около 5000 строк ... Вот задача в том, чтобы посчитать колличество повторяющихся подстрок в массиве, для наиболее часто встречающегося значения (и приближённых к моде значений). В принципе с сортировкой справлюсь самостоятельно. А выудить из массива этот рейтинг значений у меня ну никак ума не хватает...Решение задачи: «Поиск моды и приближённых к моде подстрок массива VBA»
textual
Листинг программы
Option Explicit Sub get_mas() Dim i, z, j, t Randomize Open ActiveWorkbook.Path & "\vektor.txt" For Output As 1 For i = 1 To 1000 z = Int(10 * Rnd + 1) t = "" For j = 1 To z * 5 t = t & Int(6 * Rnd + 1) Next j Print #1, t Next i Close End Sub Sub get_mod() Dim arr, pat, i, t, r, sl: Set sl = CreateObject("Scripting.Dictionary") pat = ActiveWorkbook.Path & "\vektor.txt" arr = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(pat, 1).ReadAll, vbCrLf) For r = 0 To UBound(arr) For i = 1 To Len(arr(r)) Step 5 t = Mid(arr(r), i, 5) sl(t) = sl(t) + 1 Next i Next r With ActiveSheet .Cells.ClearContents .Cells(1, 1).Resize(sl.Count) = Application.Transpose(sl.keys) .Cells(1, 2).Resize(sl.Count) = Application.Transpose(sl.items) .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Range("B1"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortTextAsNumbers With .Sort .SetRange Range("A1:B" & sl.Count) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д