Excel中查找给定单元格的列(标题)名称

时间:2015-02-21 00:02:12

标签: excel vba excel-vba

我有一个工作簿,在许多不同的列(20+)中有许多订单号。每列都有一个不同的标题(列名),可以在第一行中找到。

在另一张纸上,我将把所有订单编号编译到A栏。在B栏中,我将填写每个订单号的列名称(标题)。

下面的代码将为我提供一个返回工作表名称的功能。在第14行,我尝试改变w。标题到标题,但它不起作用。

Option Explicit
Function FindMyOrderNumber(strOrder As String) As String

    Dim ws As Worksheet
    Dim rng As Range
    Application.Volatile
    For Each ws In Worksheets
        If ws.CodeName <> "Sheet3" Then
            Set rng = Nothing
            On Error Resume Next
            Set rng = ws.Cells.Find(What:=strOrder, LookAt:=xlWhole)
            On Error GoTo 0
            If Not rng Is Nothing Then
                FindMyOrderNumber = ws.Name
                Exit For
            End If
        End If
Next

Set rng = Nothing
Set ws = Nothing

End Function

2 个答案:

答案 0 :(得分:0)

根据您的描述,您似乎希望返回与您传入此功能相同的价值......

如果您的意思是要返回找到标题的列字母,请编辑以下行:

'On Error Resume Next 'don't need this...
Set rng = ws.Rows(1).Find(What:=strOrder, LookAt:=xlWhole)
'On Error GoTo 0
If Not rng Is Nothing Then
    FindMyOrderNumber = Replace(rng.Address(False, False),"1","")
    Exit For
End If

编辑:要返回标题下方单元格中的值:

'On Error Resume Next 'don't need this...
Set rng = ws.Rows(1).Find(What:=strOrder, LookAt:=xlWhole)
'On Error GoTo 0
If Not rng Is Nothing Then
    FindMyOrderNumber = rng.Offset(1,0).Value
    Exit For
End If

答案 1 :(得分:0)

FindMyOrderNumber = ws.Cells(1, rng.Column)