我正在尝试在sheet2(A1:DF5000)
中找到来自sheet1的值。问题是值可以在sheet2中的任何位置。一旦发现匹配,还有一件事;让我们说sheet2 X495
我需要它来返回sheet2 X1
的值。
因此,如果我在搜索“ABC”并且在sheet2!D14
中找到了完全匹配。它将返回值Sheet2!D1
。
真实世界的应用:
我正在使用excel跟踪我用于产品的所有sku。每个站点都需要一个独特的sku。所以我有数百个sku's都是相同的产品。所以我在excel中有一个主列表,第1行作为我的产品,然后每列都有每个产品使用的所有sku
下面的代码正在运行,但发生了一些有趣的事情。事实证明它并没有寻找完全匹配,但它已经接近了。
任何人都可以帮我解决这个问题吗?
如果我不清楚,也可以随意问我任何问题。
Function GetPart(text As Variant, rCells As Range)
Dim txt As String
Dim rRange As Range
Dim SubjCell
For Each rRange In rCells
SubjCell = rRange
txt = text
If InStr(txt, SubjCell) <> 0 Then
GetPart = SubjCell
Exit For
Else
GetPart = "Not Found"
End If
Next rRange
End Function
答案 0 :(得分:0)
这是你在尝试什么?我已对代码进行了评论,以便您在理解代码时不会有任何问题:)如果您这样做,请告诉我。
Option Explicit
Function GetPart(rng As Range, rngDB As Range) As Variant
Dim aCell As Range, strSearch as String
GetPart = 0
On Error GoTo Whoa:
'~~> This is the value which we will search
strSearch = rng.Value
'~~> Notice the use of LookAt:=xlWhole. This is to ensure that we
'~~> do not get False Positives. Using INSTR will give you False
'~~> Positives. For example searching for "Coke" in "DigitalCoke"
Set aCell = rngDB.Find(What:=strSearch, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'~~> If the match is found
If Not aCell Is Nothing Then
'~~> Get value from the first row
GetPart = aCell.Offset(-(aCell.Row - 1))
End If
Exit Function
Whoa:
End Function