我想创建一个 Microsoft Excel 公式,查找矩阵中给定值的对应范围。
用一个通用的例子来解释
引用表
| Name | From | To |
| A | 1 | 5 |
| B | 6 | 8 |
| C | 9 | 9 |
源表
| Name | Value |
| | 0 |
| | 4 |
| | 9 |
^
Field is getting "calculated".
结果表
| Name | Value |
| | 0 |
| A | 4 |
| B | 6 |
| C | 9 |
^
Field is getting "calculated".
具体解释
在我的参考表中,我确实有频率信息,其中包括频率范围在哪个频段以及我被允许使用多少瓦特。
在我的源/结果表(相同)中,我有一个频率列表,并希望自动将频段和瓦特信息分配给它。
引用表
| Band | Frequency Range | Watts |
| 160 m | 1.810 | 1.850 | 100 |
| 160 m | 1.890 | 2.000 | 10 |
预期结果表
First part is source field for the look up.
v
| Band | Frequency Range | Watts | Description |
| 160 m | 1.811 | 1.811 | 100 | Foo Bar |
| 160 m | 1.891 | 1.897 | 10 | Lorem ipsum |
^ ^
Field is "calculated". Field is "calculated".
结论
如何定义(当由于范围而可能时)一个 Excel 公式,该公式从矩阵中选择正确的矩阵参考行,同时从矩阵中查找某个范围内的单个值?
该公式应该与 Excel 97 兼容,但至少与 Excel 2000 兼容。
答案1
基本上,您需要使用VLOOKUP
来获取此信息。
首先将您的“来自”列复制/移动到最左边,这样您的列将按以下顺序排列:A(来自)、B(名称)、C(到)。
如果您有连续范围(例如,您可以将示例中的 1.870 视为第一组的成员),那么您的公式(在结果表的 A2 中):=IFERROR(VLOOKUP(B2,reference_sheet!A:C,2,true),"")
如果您想在频率介于范围之间时获取空值,则公式将更加复杂(仍然根据一般示例使用参考):
首先获取忽略上限的组的行:
=IFERROR(MATCH(B2,reference_sheet!A:C,1),"")
- 将其放在例如 C 列中然后检查你的值是否在范围内:
=IFERROR(B2<=index(reference_sheet!C:C,C2),FALSE)
TRUE
现在,您在 D 列和E 列中为每个条目提供了行号,INDEX
现在您可以使用该函数收集所需的数据。(也可以在没有任何辅助列的情况下完成所有操作,但在这种情况下公式将复杂得多)
答案2
如果您愿意更改参考表,使范围列成为最左边的列,那么该VLOOKUP
函数应该可以满足您的要求。由于您尝试匹配范围,而不是特定值,因此您应该确保您的参考表按范围排序,并将其TRUE
作为VLOOKUP
第 4 个参数传递。
如果您不想重新排列参考表以将范围定位在左侧,那么您可以使用MATCH
和INDEX
函数的组合来实现类似的结果。
这些函数在Excel 2007及更高版本中均可用。