Excel:search特定列中的文本

在excel表格中,我search一个关键字来标记列的标题,这是很容易的部分。 现在我需要在这个列中search另一个string。 重点是相同的string也出现在其他列,但在不同的行,所以这些都需要被忽略。 我发现这样做的唯一方法是通过这里描述的方法: https : //msdn.microsoft.com/en-us/library/office/ff839746.aspx

当我尝试find这样的string:

Dim moduleCol As Excel.Range = moduleSheet.Cells.Find("Module Naam") Dim upstreamRow As Integer With moduleSheet.Range(moduleCol, moduleSheet.Cells(moduleSheet.UsedRange.Row, moduleCol.Column)) upstreamRow = .Find(upstreamEm).Row End With 

它findstring,但在错误的列(因此在错误的行)。 在我的示例表中,我知道我在'D'列search,所以出于testing目的,我试着:

  Dim upstreamRow As Integer Dim testCol As Integer With moduleSheet.Range("d1:d500") Dim testCell As Excel.Range = .Find(upstreamEm) upstreamRow = testCell.Row testCol = testCell.Column End With 

现在,根本没有find该string,尽pipe它存在于该列中(在单元格d14处)。 我错过了什么? 有没有更好的方法来find它?

像这样的事情应该做的伎俩。 它将find第一个值,然后将第二个值的查找范围设置为仅查找find第一个值的列。 显然,它需要调整以满足您的需求,但它应该让你在那里。 下面的代码是我的数据集的截图:

 Sub test() Dim fVal As String Dim fRange As Range fVal = "TEST2" Set fRange = ActiveSheet.Cells.Find(What:=fVal, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) If Not fRange Is Nothing Then fVal = "B" Set fRange = ActiveSheet.Columns(Split(fRange.Address, "$")(1)).Find(What:=fVal, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) fRange.Select End If End Sub 

在这里输入图像说明