Excel 中的复杂条件文本格式

Complex conditional text formatting in Excel

我需要在 Excel 电子表格中有条件地将文本加粗。逻辑如下:

对于每条记录,我需要将 E 列中与 B 列中的人名对应的姓氏首字母加粗(其格式为姓氏、名字)。 E 列中的所有姓氏首字母均以逗号分隔。请注意,E 列中可能有两个相同的姓氏首字母不同。我需要遍历包含 1,000 多条记录的电子表格。示例如下:

A B C D E
value Smith, Joseph value value Jones K, Jenkins T, Smith J, Hines L, Abdhel B, Higgins M
value Roberts, Anna value value Taylor B, Starbert K, Helmann E, Santoro P, Stebnitz M, Hamilton A, Brown P, Palmer A, Roberts A, Stanton J
value Chen, Jennifer value value Anderson B, Chen J, Flanders C, Chen P, Aberdeen T, Daniels P

非常感谢任何帮助。

比安卡,

欢迎使用 Whosebug。

我想不出使用 UI 条件格式中的公式来执行此操作的方法。

但是,下面的宏将完成任务。

Option Explicit

Sub BoldPartString()

   Dim lRowCntr   As Long
   Dim iSStrLen   As Integer
   Dim iStart     As Integer
   Dim zSearchStr As String
   
   lRowCntr = 1
   
   
   Do
   
     'Determine the part of the Col B value to use to search Col E
     zSearchStr = Left(Cells(lRowCntr, "B"), InStr(Cells(lRowCntr, "B"), ",") - 1) & _
                   Mid(Cells(lRowCntr, "B"), InStr(Cells(lRowCntr, "B"), ",") + 1, 2)
                   
     'Find the number of characters you'll have to format once the string is found in Col E
     iSStrLen = Len(zSearchStr)
     
     'Search Col E for the value in zSearchStr
     If (InStr(Cells(lRowCntr, "E"), zSearchStr) > 0) Then
     
       'Find the starting character location in Col E
       iStart = InStr(Cells(lRowCntr, "E"), zSearchStr)
       
       'Apply the Bold FontStyle to the substring using previously calculated Start/Stop values
       Cells(lRowCntr, "E").Characters(iStart, iSStrLen).Font.FontStyle = "Bold"
     
     End If
   
     'Move to next row
     lRowCntr = lRowCntr + 1  'Next Row
     
   Loop Until Cells(lRowCntr, "A") = ""
   
End Sub