Макрос сравнения текста в массиве - VBA

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

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

Есть такая задача: найти в столбике D ячейку и сравнить её с остальными ячейками в этом же столбике на совпадение текста(в процентном соотношении). Дальше необходимо полученный процент поставить в найденной строке в столбик М. Например берем ячейку D36 и сравниваем со всеми ячейками в столбике D. Допустим совпадение текста D36 и D75 40%. Эту цифру мы вставляем в ячейку М75. На данный момент нашла вроде бы подходящий код, но он не работает. Подскажите что я не так указала либо предложите свой вариант (только можно с комментами, а то мне учиться надо же как-то).
Листинг программы
  1. Sub ÄÆÊÕ()
  2. '
  3. ' ГЊГ*êðîñ Г*Г* Г±Г°Г*ГўГ*ГҐГ*ГЁГҐ ГІГҐГЄГ±ГІГ*
  4. '
  5. Dim Svp, lr, i&
  6. lr = Cells(Rows.Count, 4).End(xlUp).Row 'ïîñëåäГ*ГїГї ñòðîêГ*
  7. Svp = [a2].CurrentRegion.Columns(4).Value ' Г¬Г*Г±Г±ГЁГў Г¤Г*Г*Г*ûõ äî ïîñëåäГ*ГҐГ© ñòðîêè
  8. For i = 1 To UBound(Svp) ' öèêë ГЇГ® Г¬Г*Г±Г±ГЁГўГі
  9. If Cells.InterColor = vbYellow Then ' åñëè ÿ÷åéêГ* æåëòГ*Гї ГІГ® äåéñòâèå âûïîëГ*ГїГҐГІГ±Гї
  10. Dim s1 As String, mass As Range
  11. Dim as1, as2, l1 As Long, l2 As Long, lr As Long
  12. Dim asStr2
  13. Dim s As String, s2 As String, lp, lTmpCom As Long, lResCom As Long
  14. Dim lResR As Long, sResS As String, v
  15. as1 = Split(s1, sDelim)
  16. asStr2 = mass.Value
  17. If Not IsArray(asStr2) Then ReDim asStr2(1 To 1, 1 To 1): asStr2(1, 1) = mass.Value
  18. For lr = 1 To UBound(asStr2, 1)
  19. as2 = Split(asStr2(lr, 1), sDelim)
  20. lResCom = 0
  21. For l1 = LBound(as1) To UBound(as1)
  22. s = as1(l1)
  23. For l2 = LBound(as2) To UBound(as2)
  24. If as2(l2) = s Then
  25. lResCom = lResCom + 1
  26. Exit For
  27. End If
  28. Next l2
  29. Next l1
  30. If lTmpCom < lResCom Then
  31. lTmpCom = lResCom
  32. lResR = lr
  33. sResS = asStr2(lr, 1)
  34. lp = lp + 1
  35. End If
  36. Next lr
  37. v = (lTmpCom / (UBound(as1) + 1)) * 100
  38. Cell(Svp, 13) = v
  39.  
  40. End Sub
Дальше в идеале нужно было сделать отборку и первые 10 строк с максимальным совпадением переместить на другой лист, но эту часть кода я пока не сделала(уже сделанное не работает). Если эту отборку можно сделать вируально, без исправлений в файле, то подскажите этот вариант,пожалуйста. P.S. Так как загрузить можно файл не больше 100 кб, то файл во вложении ОЧЕНЬ обрезан и совпадения на нем могут быть минимальны

Решение задачи: «Макрос сравнения текста в массиве»

textual
Листинг программы
  1. v = Val / Val1 * 100 ' âû÷èñëÿåì ïðîöåГ*ГІ

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


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

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

7   голосов , оценка 4.143 из 5

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

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

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