Удаление строк по сложному условию с посимвольным сравнением значений ячеек. - VB

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

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

Уважаемые эксперты, прошу помощи в решении следующей задачи:
Таблица состоит из 2 столбцов: в столце "А" - оригинал слова на английском(с кучей мусора), в "В" - перевод на руссий (тоже с кучей мусора).

Задача :

удалить/выделить лишние строки, соблюдая определенные правила, например:
Если перевод слова на русском совпадает,а оригинальные слова имеют одинаковый "корень"(общую часть) и отличаются только окончанием вида: іеr,ierst,y,ied,ily…. то оставляем строку с окончанием "y", а остальные(с окончаниями іеr,ierst,ied,ily...) - удаляем/выделяем.
Таких правил и самих окончаний довольно много, но если подскажите решение для одного варианта, я для остальных, думаю, доделаю.
Заранее благодарен, буду рад любой помощи.

Решение задачи: «Удаление строк по сложному условию с посимвольным сравнением значений ячеек.»

textual
Листинг программы
Option Explicit

' как отделить окончание от корня
Sub RootSepatatorExample()
    Const SuffixesPattern As String = "(iest|ing|ier|y|e)$"
    
    Dim MyDictionary
    Dim RegExRootSeparator As Object
    Dim i As Long
    Dim Root As String
    
    MyDictionary = Array( _
        "coruscate", "сверкать", _
        "coruscating", "сверкать", _
        "effulge", "сверкать", _
        "effulging", "сверкать", _
        "artsier", "претендующий на художественность", _
        "artsiest", "претендующий на художественность", _
        "artsy", "претендующий на художественность", _
        "art", "искусство" _
    )

    'http://www.script-coding.com/WSH/RegExp.html    
    Set RegExRootSeparator = CreateObject("VBScript.RegExp")
    RegExRootSeparator.Pattern = SuffixesPattern
    
    For i = LBound(MyDictionary) To UBound(MyDictionary) Step 2
        Root = RegExRootSeparator.Replace(MyDictionary(i), "")
        
        Debug.Print _
            MyDictionary(i + 1) & ", " & _
            MyDictionary(i) & ", " & _
            Root & ", " & _
            Mid$(MyDictionary(i), Len(Root) + 1)
    Next i
    
    Erase MyDictionary
    Set RegExRootSeparator = Nothing
End Sub

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы