如何提取Excel中最长连续超10,000,000区间的最小值?
问题描述
需完成两项任务:
- 统计数值超过10,000,000的最长连续时段长度(示例中为9)
- 提取该最长连续时段内最接近10,000,000的最小值(示例中为11,000,000)
已通过数组公式(需按Ctrl+Shift+Enter执行)算出最长连续时段长度:
=MAX(FREQUENCY(IF(A28:AA28>=$A$1,COLUMN(A28:AA28)),IF(A28:AA28<$A$1,COLUMN(A28:AA28))))
(注:原公式中COLUMN(A8:AA28)为笔误,已修正为COLUMN(A28:AA28))
示例数据(单一行,列A到N):
- A列:10,000,000
- B列:18,000,000
- C列:6,000,000
- D列:15,000,000
- E列:11,000,000
- F列:15,000,000
- G列:15,000,000
- H列:15,000,000
- I列:15,000,000
- J列:19,000,000
- K列:15,000,000
- L列:15,000,000
- M列:9,000,000
- N列:7,000,000
解决方案
方法1:整合式数组公式(直接提取最小值)
使用以下数组公式(需按Ctrl+Shift+Enter执行),可直接定位最长连续符合条件的时段,并提取其中的最小值:
=MIN(IF(FREQUENCY(IF(A28:AA28>=$A$1,COLUMN(A28:AA28)),IF(A28:AA28<$A$1,COLUMN(A28:AA28)))=MAX(FREQUENCY(IF(A28:AA28>=$A$1,COLUMN(A28:AA28)),IF(A28:AA28<$A$1,COLUMN(A28:AA28)))),A28:AA28))
若存在多个长度相同的最长连续段,该公式会返回所有段中的最小值。
方法2:分步定位提取
- 获取最长连续段的起始列号
执行以下数组公式(Ctrl+Shift+Enter):
=INDEX(COLUMN(A28:AA28),MATCH(MAX(FREQUENCY(IF(A28:AA28>=$A$1,COLUMN(A28:AA28)),IF(A28:AA28<$A$1,COLUMN(A28:AA28)))),FREQUENCY(IF(A28:AA28>=$A$1,COLUMN(A28:AA28)),IF(A28:AA28<$A$1,COLUMN(A28:AA28))),0))
示例中会返回D列的列号(4)。
- 提取该时段的最小值
结合最长长度(9),用OFFSET定位区间后取最小值:
=MIN(OFFSET(A28,0,起始列号-COLUMN(A28),1,9))
示例中代入起始列号4,会提取D28:L28的最小值11,000,000。
内容的提问来源于stack exchange,提问作者Finch
相关产品推荐
相关产品推荐

