Пометить буквы, которые отличаются между двумя ячейками в Excel - PullRequest
0 голосов
/ 31 марта 2020

Учитывая две ячейки, каждая из которых содержит строку длины n (то есть 11), я хочу отметить все буквы в нижней ячейке жирным шрифтом, красным, которые отличаются от ячейки вверху.

Здесь пример игрушки:

enter image description here

Почему это полезно? Мне нужно сравнить множество аминокислотных последовательностей друг с другом, и это был бы отличный способ визуализировать результаты в Excel для биологов.

1 Ответ

1 голос
/ 31 марта 2020

Следующая функция сравнивает две строки, полагая 'rngWord1' в качестве исходной строки и 'rngWord2' ту, которую нужно изменить:

Sub comparetwostrings(rngWord1 As Excel.Range, rngWord2 As Excel.Range)
    Dim l As Long

    If rngWord1.Value <> rngWord2.Value Then

        For l = 1 To Len(rngWord1.Value)   

            If Mid(rngWord1.Value, l, 1) <> Mid(rngWord2.Value, l, 1) Then
                rngWord2.Characters(l, 1).Font.Color = vbRed
                rngWord2.Characters(l, 1).Font.Bold = True    
            Else 
                rngWord2.Characters(l, 1).Font.Color = vbBlack   
            End If

        Next l

    End If
End Sub

Чтобы запустить функцию, можно нажать кнопку Command CompareAllStrings. создано. Внутри диапазон определен как l oop over и выполняет парное сравнение строк. Оба параметра 'rng1' и 'Offset' должны быть скорректированы на основе заданного макета c Excel:

Private Sub btnCompareAllStrings_Click()
    Dim rng1 As Range, e As Range

    Set rng1 = Range("B2:Z2")
    For Each e In rng1
        comparetwostrings e, e.Offset(1, 0)
        comparetwostrings e.Offset(2, 0), e.Offset(3, 0)
    Next
End Sub
...