【问题标题】:excel lookup within multiple columns多列中的excel查找
【发布时间】:2013-03-20 17:27:26
【问题描述】:

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

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

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

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

任何帮助将不胜感激

谢谢 加雷斯

【问题讨论】:

  • "该值可以在 Sheet2 的列中的任何位置"。这些列是否已标记? “然后我想要 Sheet1 上第 1 行第 6 列中的值......”你的意思是列 13 吗??
  • ...使用 VBA 很容易做到这一点,但是没有内置的 Excel 函数用于此...。如果您想这样做,请告诉我...
  • 如果您发布了每张工作表中的一些示例数据,显示您希望查找如何工作,您的问题会更容易理解。

标签: excel


【解决方案1】:

...我知道您没有要求 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 模块中,您可以像此时的任何其他函数一样从电子表格中调用它。

希望这会有所帮助:)

【讨论】:

  • 此功能完美运行。非常感谢您的时间和精力。
  • 好吧,也许我有点超前了。
  • 在某些查找单元格中,值中有一个空格,因此我将公式修改为 = FindInRange(LEFT(A2831,LEN(A2831)-FIND(" ",A2831)-1), MyRange, 1) 所以它只查找空格之前的值。问题是它没有进行精确匹配查找(例如,原始值 = 123 456 在 (LEFT(A2831,LEN(A2831)-FIND(" ",A2831)-1) 计算之后,值 = 123 是正确的,但如果有是 MyRange 单元格中的一个值,比如 0123,那么它采用这个值而不是它应该找到的 123 值)所以有没有办法进行精确匹配查找。
  • ... 将 find 行更改为:Set FoundCell = LookIn.Find(what:=Val, LookAt:=xlWhole) - 这将寻找完全匹配...我也相应地更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2020-01-24
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多