2017-04-26 33 views
1

我有一个从未以相同格式接收的工作簿。为了防止人工干预,我需要捕获文本employee所在的列。例如,如果文本在列O中 - 我将执行以下操作,但我需要基于包含的单元格更改Cells(i,"O")文字employee将变量设置为标题文本列

Sub DoThis() 
Application.ScreenUpdating = False 
Dim i As Long 
For i = Range("A" & Rows.Count).End(3).Row To 2 Step -1 
    If Not IsEmpty(Cells(i, "O").Value) Then 
     'stuff here 
    End If 
Next i 
End Sub 
+0

标题总是“雇员”吗?这是单元格中唯一的文字吗? – Jordan

+0

@Jordan - 是我需要找到的标题文本始终是员工 – BellHopByDayAmetuerCoderByNigh

回答

3

可以使用Find方法和获取employee被发现在Cells使用单元格的列:

Option Explicit 

Sub DoThis() 

    Dim i As Long 
    Dim lngCol As Long 

    With Worksheets("Sheet1") '<-- change to your sheet 
     lngCol = .Rows(1).Find("employee").Column '<-- assumes header in Row 1 
     For i = .Range("A" & .Rows.Count).End(3).Row To 2 Step -1 
      If Not IsEmpty(.Cells(i, lngCol).Value) Then 
       'stuff here 
      End If 
     Next i 
    End With 

End Sub 
1

使用find方法

Cells.Find("employee") 

这会找到指定的(这里我用Cells但我想缩小这个下来到你的范围)范围内的单元格,它将返回包含文本“员工”的单元格。然后,您可以参考这个作为Range对象即使用.Row得到行号或.Column得到列数