1

我希望有人可以帮助我完成我认为很简单的任务。

我有一个包含许多列的工作表(Sheet1)。前两个分别只是一个数字和一个名称。在这两列之后,每行都有不同的列(例如,第一行有 10 列,第二行有 4 列等)。

我有另一个包含 2 列的工作表(Sheet2)。第一列有一个我想在 Sheet1 中查找的值。问题是该值可以在前两列之后的 Sheet2 列中的任何位置。(例如,查找值 123,值在第 13 列第 6 行或查找值 456 在第 5 列第 14 行)然后我想要值将 Sheet1 上的第 1 列第 6 行放入 Sheet2 上的第 2 列。

我曾尝试使用 Vlookup、Hlookup 和 Lookup,但似乎无法弄清楚如何让它工作。

任何帮助将非常感激

谢谢加雷斯

4

1 回答 1

2

...我知道您没有要求 VBA 解决方案,但我只是想写一个来看看我会怎么做...

我让它“又快又脏”,没有任何错误检查等,但它会给你你正在寻找的东西:

  Public Function FindInRange(Val As Variant, LookIn As Range, ColIndexNumber As Integer) As Range

  ' INPUTS:
     ' Val             = The Value you're looking for in your Range of cells
     ' Range           = The range of cells you're searching through
     ' ColIndexNumber  = The index of the column you want a value returned from within the row from which the value is found

  ' NOTE:
  ' This will only pull the first value matching your "Val" argument

  Dim FoundCell As Range

  Set FoundCell = LookIn.Find(what:=Val, LookAt:=xlWhole)

  If FoundCell Is Nothing Then
     Set FindInRange = Nothing
  Else
     Set FindInRange = Intersect(LookIn.Columns(ColIndexNumber), FoundCell.EntireRow)
  End If

  End Function

如果将其粘贴到 VBA 模块中,则可以从电子表格中调用它,就像此时的任何其他函数一样。

希望这可以帮助 :)

于 2013-03-20T18:19:10.613 回答