【问题标题】:Index/Match with Varied Offset具有不同偏移量的索引/匹配
【发布时间】:2018-04-27 14:34:09
【问题描述】:

在执行索引/匹配时遇到一些问题,其中偏移行可能相隔 1 行、2 行或 3 行。以下是设置示例:

表 1:

|   A   |   B   |   C   |   D   |   E   |   F   |
-------------------------------------------------
|       |       |       |       | Apple |       |
-------------------------------------------------
| Ser1  |       |       |       |       |       |
-------------------------------------------------
|       |       |       |       | Orange|       |
-------------------------------------------------
| Ser2  |       | Ser3  |       | Ser4  |       |
-------------------------------------------------
| Ser5  |       |       |       |       |       |

表 2:

|   A   |
---------
| Ser1  |
---------
| Ser2  |
---------
| Ser3  |
---------
| Ser4  |
---------
| Ser5  |

我在另一张表中有序列号(ser1、ser2 等)列表,我需要匹配 E 列中的值,其中正确值比序列号高 1、2 或 3 行。如您所见,序列号可能位于 A、C 或 E 列中。

例如:Ser1 应该与 Apple 匹配。 Ser2、Ser3、ser4 和 Ser5 应该在 Orange 上匹配。

我似乎无法找出完全有效的正确索引/匹配,因为公式末尾的偏移量是静态行号的 + 或 -。

【问题讨论】:

  • 您是否考虑过使用 VBA 来转换数据?
  • 我希望不使用 VBA 只是因为我不太擅长它。
  • 这只是一个非常糟糕的设置电子表格。与其试图找出一个复杂的公式来做你想做的事,你应该以一种对用户更友好的方式来设置你的电子表格。
  • 我同意 100%,但我无法控制客户端如何向我发送数据。如果我按照自己的方式,他们会完全按照我的需要发送数据库导出设置,但这通常不是一个选择。

标签: excel excel-formula


【解决方案1】:

粗略的解决方案:

在您的工作表中制作如下结构:

|   A   |   Row  | Lookup
---------
| Ser1  |
---------
| Ser2  |
---------
| Ser3  |
---------
| Ser4  |
---------
| Ser5  |

对于列行放置:

=SUMPRODUCT((Sheet1!A$1$:E$5$=A2)*ROW(Sheet1!A$1$:E$5$))

这将计算您的数据范围内出现序列号的行。然后你可以放入 Lookup 列:

=LOOKUP(2,(1/(INDEX(Sheet1!$E$1:$E$5,1,1):INDEX(Sheet1!$E$1:$E$5,B2-1,1)<>"")),Sheet1!$E$1:$E$5)

此公式将在所选序列号上方的范围内查找 E 列中最后一个非空单元格(请参阅here 了解更多 cmets)。

这是“Ser5”的部分解决方案,您将收到“Ser4”。为了克服这个问题,您可以对已取得的结果执行额外的Vlookup

【讨论】:

  • 这太完美了!我必须浏览源表并将 ser4 和 ser5 移动到与 ser1、ser2 和 ser3 相同的行,然后扩大我的范围,但逻辑和解释非常好。谢谢!
  • @dgibbons82 我很高兴它有帮助:)
猜你喜欢
  • 2017-09-14
  • 2019-02-20
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多