EXCEL表格请见图片。想要达到的效果是:比如,点击张三的名字,就显示但凡有张三参加的项目都能出现。

如题所述

可以通过vba实现点击”张三“时,所有”张三“都变成特定格式显示,如文字变成红色:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim x!, l As String

l = Target.Value

x = [j3].End(xlDown).Row

If Target.Row < 3 Or Target.Row > x Or Target.Column < 10 Or Target.Column > 12 Then Exit Sub

Range("j3:l" & x).Font.Color = 0

For i = 3 To x

  For j = 10 To 12

    If Cells(i, j).Value = l Then

      Cells(i, j).Font.Color = -16776961

    End If

  Next j

Next i

End Sub

注意:将本代码复制到vba编辑窗口中你需要的工作表内,如下图:

如上图中,我是在sheet3中写的代码

追问

仅标出来红色恐怕不行,因为实际的表格很长。标红色出来,还是不够明显。烦请高手帮忙解决。或者用筛选行不行?多列同时筛选一个人的名字

追答

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x!, l As String
x = [j3].End(xlDown).Row
If Target.Row x Or Target.Column 12 Then GoTo 100
Range("j3:l" & x).Font.Color = 0
l = Target.Value
For i = 3 To x
For j = 10 To 12
If Cells(i, j).Value = l Then
Range("aa" & i) = "l"
Exit For
Else
Range("aa" & i) = ""
End If
Next j
Next i
Range("aa2") = "辅助列"
ActiveSheet.Range("$A$2:$AA$" & x).AutoFilter Field:=27, Criteria1:="l", VisibleDropDown:=False
GoTo 101
100:
' ActiveSheet.Range("$A$2:$AA$" & x).AutoFilter Field:=27
101:
End Sub
这组代码,有个问题:1、需要添加辅助列(当然,是代码自动完成的);2、需要你手动回复全部显示

温馨提示:答案为网友推荐,仅供参考
相似回答