将变量设置为标题文本列

时间:2017-04-26 13:02:14

标签: excel vba excel-vba excel-2013

我有一个从未以相同格式收到的工作簿。为了防止手动干预,我需要捕获文本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

2 个答案:

答案 0 :(得分: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 :(得分:1)

使用find方法

Cells.Find("employee")

这将找到指定范围内的单元格(此处我使用Cells但我将其缩小到您的范围)并返回包含文本“employee”的单元格。然后,您可以将其引用为Range对象,即使用.Row获取行号或.Column获取列号