excel 查找最近的符合条件的单元格
excel find nearest cell that meets a criteria
我正在尝试编写一个公式来找到满足特定条件的最近小区简而言之,我有一个 table 天线数据,表示它在周围不同角度的性能,我想要计算 3dB 波束宽度。
table 的格式为:
+-------------------------------------+
| Angle | Freq 1 | Freq 2 | Freq 3 |
+----------+--------+--------+--------+
| 0 | -2 | -4 | -6 |
| 10 | -2.5 | 4 | -7 |
| 20 | -2 | 5 | 0 |
| 30 | 1 | 6 | 2 |
| 40 | 4 | 7 | 2 |
| 50 | 5 | 6 | 3 |
| 60 | 4 | 6 | 2 |
| 70 | 2 | 5 | 2 |
| 80 | 0 | 4 | 2 |
| 90 | -2.5 | 2 | 1 |
| 100 | -2 | -4 | 0 |
| ... | ... | ... | ... |
| 350 | -2 | -4 | -6 |
| 360 | -2 | -4 | -6 |
+----------+--------+--------+--------+
| Max | 5 | 7 | 3 |
| Ang. Max | 50 | 40 | 50 |
+----------+--------+--------+--------+
所以我目前使用max
获取table中的最大值,并使用INDEX([angle range],MATCH([max cell],[freq column range],0))
查找最大值对应的角度。
我需要一个公式来找到最大值上方的最后一个单元格的对应角度,即最大值的 3dB 及其下方的最后一个单元格的角度,然后得到这些角度之间的差异以获得波束宽度以度为单位,因此对于频率 1:
上图:4 - 角 40
下面:2 - 角度 70
波束宽度:70 - 40 = 30
频率 2:
上面:4 - 角度 10
下面:4 - 角度 80
波束宽度:80 - 10 = 70
频率 3:
上图:0 - 角度 20
下面:0 - 角度 100
波束宽度:100 - 20 = 80
理想情况下,它会在最后一个 3dB 的单元格和第一个外部单元格之间进行线性插值,以猜测这些步骤之间的角度......但这可能是一座太远的桥梁。
我想避免使用宏来执行此操作,因为我希望在源数据发生变化时自动计算它,并且我需要能够将其发送到不允许 运行 宏。
我考虑过使用 LOOKUP
或 VLOOKUP
,但除非设置了选项,否则它们需要匹配一个确切的值,但是当我尝试设置该选项时,我根本没有匹配(max - 3)
的值
不太确定还能尝试什么。
Excel 2010 年及以上:
找到上面的:
=INDEX($A:$A,AGGREGATE(15,6,ROW(B:B)/(B:B>=MAX(B:B)-3),1))
要找到下面的内容,请将 15
更改为 14
:
=INDEX($A:$A,AGGREGATE(14,6,ROW(B:B)/(B:B>=MAX(B:B)-3),1))
然后 drag/copy 越过以引用下一列。
对于 2007 年及以下版本,您需要使用以下数组公式:
以上:
=INDEX($A:$A,SMALL(IF(B:B>=MAX(B:B)-3,ROW(B:B)),1))
以下:
=INDEX($A:$A,LARGE(IF(B:B>=MAX(B:B)-3,ROW(B:B)),1))
作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而非 Enter 进行确认。如果操作正确,那么 Excel 将在公式周围加上 {}
。
我正在尝试编写一个公式来找到满足特定条件的最近小区简而言之,我有一个 table 天线数据,表示它在周围不同角度的性能,我想要计算 3dB 波束宽度。 table 的格式为:
+-------------------------------------+
| Angle | Freq 1 | Freq 2 | Freq 3 |
+----------+--------+--------+--------+
| 0 | -2 | -4 | -6 |
| 10 | -2.5 | 4 | -7 |
| 20 | -2 | 5 | 0 |
| 30 | 1 | 6 | 2 |
| 40 | 4 | 7 | 2 |
| 50 | 5 | 6 | 3 |
| 60 | 4 | 6 | 2 |
| 70 | 2 | 5 | 2 |
| 80 | 0 | 4 | 2 |
| 90 | -2.5 | 2 | 1 |
| 100 | -2 | -4 | 0 |
| ... | ... | ... | ... |
| 350 | -2 | -4 | -6 |
| 360 | -2 | -4 | -6 |
+----------+--------+--------+--------+
| Max | 5 | 7 | 3 |
| Ang. Max | 50 | 40 | 50 |
+----------+--------+--------+--------+
所以我目前使用max
获取table中的最大值,并使用INDEX([angle range],MATCH([max cell],[freq column range],0))
查找最大值对应的角度。
我需要一个公式来找到最大值上方的最后一个单元格的对应角度,即最大值的 3dB 及其下方的最后一个单元格的角度,然后得到这些角度之间的差异以获得波束宽度以度为单位,因此对于频率 1:
上图:4 - 角 40
下面:2 - 角度 70
波束宽度:70 - 40 = 30
频率 2:
上面:4 - 角度 10
下面:4 - 角度 80
波束宽度:80 - 10 = 70
频率 3:
上图:0 - 角度 20
下面:0 - 角度 100
波束宽度:100 - 20 = 80
理想情况下,它会在最后一个 3dB 的单元格和第一个外部单元格之间进行线性插值,以猜测这些步骤之间的角度......但这可能是一座太远的桥梁。
我想避免使用宏来执行此操作,因为我希望在源数据发生变化时自动计算它,并且我需要能够将其发送到不允许 运行 宏。
我考虑过使用 LOOKUP
或 VLOOKUP
,但除非设置了选项,否则它们需要匹配一个确切的值,但是当我尝试设置该选项时,我根本没有匹配(max - 3)
不太确定还能尝试什么。
Excel 2010 年及以上:
找到上面的:
=INDEX($A:$A,AGGREGATE(15,6,ROW(B:B)/(B:B>=MAX(B:B)-3),1))
要找到下面的内容,请将 15
更改为 14
:
=INDEX($A:$A,AGGREGATE(14,6,ROW(B:B)/(B:B>=MAX(B:B)-3),1))
然后 drag/copy 越过以引用下一列。
对于 2007 年及以下版本,您需要使用以下数组公式:
以上:
=INDEX($A:$A,SMALL(IF(B:B>=MAX(B:B)-3,ROW(B:B)),1))
以下:
=INDEX($A:$A,LARGE(IF(B:B>=MAX(B:B)-3,ROW(B:B)),1))
作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而非 Enter 进行确认。如果操作正确,那么 Excel 将在公式周围加上 {}
。