首页 > 解决方案 > 在 Excel 中标记两个单元格之间不同的字母

问题描述

给定两个单元格,每个单元格都包含一个长度为 n(即 11)的字符串,我想将底部单元格中的所有字母标记为粗体、红色,这些字母与顶部的单元格不同。

这是一个玩具示例:

在此处输入图像描述

为什么这很有用?我需要相互比较许多氨基酸序列,这将是生物学家在 Excel 中可视化结果的好方法。

标签: excelvbastring-comparison

解决方案


以下函数比较两个字符串,假设 '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

CompareAllStrings要运行该函数,可以创建一个名为的命令按钮。在内部,一个范围被定义为循环,并执行成对的字符串比较。'rng1' 和 'Offset' 都应该根据特定的 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

推荐阅读