用于对月份进行排序的公式 - 使用帮助列

时间:2017-05-06 16:59:03

标签: excel excel-vba excel-formula vba

我正在尝试使用帮助列根据某些条件(最小临时/最大温度和允许的最大温度列)对表进行排序,但是我无法使其工作,它不会必须使用辅助列,但这是我尝试这样做的方式。

我想要获得的是红色的预期结果

我的l2(向下拖动)是

=COUNTIFS(B$2:B$11,"<="&$B2)

我的J2(向下拖动)是

= INDEX($ B $ 2:$ B $ 10 MATCH(ROWS($ I $ 2:I 2),$ I $ 2:$ I $ 8,0))

试图做

=COUNTIFS(B$2:B$11,"<="&$B2,B$2:B$11,"<="&$G$3)

我想考虑g3,g4,g5中的值, 有序列表中的第一个项目(月)(预期结果)是按升序(从低到大)小于或等于g3的项目。 列表中的第二项是&gt;比g3但小于g4,并且G5中指定的项目有限

enter image description here

1 个答案:

答案 0 :(得分:1)

enter image description here

为了处理重复的值, 辅助列用于制作唯一键, 其中包括月份编号,并使用SMALL()函数对它们进行排序。 假设A2:A11中的月份名称是文本(不是日期值,格式为“MMM”) J2中的数组公式并向下拖动到J11

=SMALL(MONTH(DATEVALUE("1"&$A$2:$A$11&" 2001"))+ROUND(($B$2:$B$11+300)*1000,-2),ROW(I2)-ROW($I$1))

假设温度值四舍五入到小数点后的一位数, 调整值(+300)以处理负温度, 向左移动(*1000)并添加月份编号。

D2

=IF(E2<=$H$3,TEXT(DATE(2001,MOD($J2,100),1),"MMM")," ")

E2

=IF(ROUND($J2/1000-300,1)<=$H$3,ROUND($J2/1000,1)-300," ")

D3并向下拖动到D11

=IF(OR(E3<=$H$3,AND(E3>$H$3,E3<$H$4,COUNTIF(E$2:E2,">"&$H$3)<$H$5)),TEXT(DATE(2001,MOD($J3,100),1),"MMM")," ")

E3并向下拖动到E11

=IF(OR(ROUND($J3/1000-300,1)<=$H$3,AND(ROUND($J3/1000-300,1)>$H$3,ROUND($J3/1000-300,1)<$H$4,COUNTIF(E$2:E2,">"&$H$3)<$H$5)),ROUND($J3/1000-300,1)," ")    

D2:D11中的可选条件格式:

enter image description here

E2:E11中的可选条件:

enter image description here