Excel VBA查找特定列的方法

当我尝试search特定列中的值时,VBA查找方法似乎失败。 这个代码

Sub TargetR() Dim CLL As Range Dim TargetRange As Worksheet Dim R As Range Set CLL = ThisWorkbook.Worksheets(1).Range("J29") Set TargetRange = ThisWorkbook.Worksheets(1) Set R = TargetRange.Cells.Find(CLL.Value) If Not (R Is Nothing) Then Debug.Print R.Address Else: Debug.Print "Empty" End If End Sub 

完美的作品。 虽然受关键字标题列限制的search失败:

 Sub Target() Dim CLL As Range Dim TargetRange As Worksheet Dim targetColumn As Range Dim sColumn As Range Dim R As Range Set CLL = ThisWorkbook.Worksheets(1).Range("J29") Set TargetRange = ThisWorkbook.Worksheets(1) Set sColumn = TargetRange.Cells.Find("This Column") Set targetColumn = sColumn.EntireColumn Set R = targetColumn.Cells.Find(CLL.Value) If Not (R Is Nothing) Then Debug.Print R.Address Else: Debug.Print "Empty" End If End Sub 

通过xlByColunm指定search方向没有帮助

尝试下面的代码(代码中的解释为注释):

 Option Explicit Sub Target() Dim CLL As Range Dim TargetRange As Worksheet Dim sColumn As Range Dim R As Range Set CLL = ThisWorkbook.Worksheets(1).Range("J29") Set TargetRange = ThisWorkbook.Worksheets(1) Set sColumn = TargetRange.Cells.Find("This Column") If Not sColumn Is Nothing Then ' <-- make sure Find was successful Set R = sColumn.EntireColumn.Find(what:=CLL.Value, LookIn:=xlValues, lookat:=xlWhole) If Not R Is Nothing Then Debug.Print R.Address Else: Debug.Print "Empty" End If Else ' Find failed to find "This Column" MsgBox "Unable to find 'This Column'" End If End Sub 

正如我想通过,如果需要查找的值包含在合并的单元格中,Find方法不能正常工作,而查找方法只应用于最左边的列,包含该合并的单元格的一部分。 为了让我的VBA代码正常工作,一些额外的合并检查和search区域的后续扩展是答案

 If sColumn.MergeCells Then Set sColumn = Column.Resize(,Column.MergeArea.Columns.Count)