Excel VBA:在另一个工作表中查找值

我正在试图从Sheet1中find一个值sheet2(A1:DF5000) 。 问题是这个值可以在sheet2中的任何地方。 一旦发现匹配,还有一件事。 可以说在sheet2 X495我需要它来返回sheet2 X1sheet2 X1

  1. 始终从search匹配返回列
  2. 总是返回第1行
  3. 始终使用完全匹配

所以如果我在search“ABC”,并且在sheet2!D14find完全匹配的话。 它将返回值Sheet2!D1

真实世界的应用:

我正在使用Excel来跟踪我用于产品的所有SKU。 每个站点都需要一个独特的sku。 所以我有几百个都是同样的产品的SKU。 所以我有第一行excel的主列表作为我的产品,然后每列都有每个产品使用的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 

这是你正在尝试? 我已经评论了代码,这样你就不会有任何问题了解它:)如果你这样做,然后让我知道。

 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