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

Excel 用于对月份进行排序的公式-使用辅助列,excel,excel-formula,vba,Excel,Excel Formula,Vba,我试图使用一个helper列根据一些条件(mintemp/max temp和allowed max temp列)对表进行排序,但是我无法让它工作,它不必使用helper列,但我就是这样尝试的 我想得到的是红色的预期结果 我的l2(下拉)是 =COUNTIFS(B$2:B$11,”请检查这些公式。它应该适合您 J列中的公式 =IF(小($B$2:$B$10,行(1:1)) 为了处理重复的值, helper列用于生成唯一键, 其中包括月份号,并使用SMALL()函数对其进行排序。 假设A2:A11

我试图使用一个helper列根据一些条件(mintemp/max temp和allowed max temp列)对表进行排序,但是我无法让它工作,它不必使用helper列,但我就是这样尝试的

我想得到的是红色的预期结果

我的l2(下拉)是


=COUNTIFS(B$2:B$11,”请检查这些公式。它应该适合您

J列
中的公式

=IF(小($B$2:$B$10,行(1:1))

为了处理重复的值, helper列用于生成唯一键, 其中包括月份号,并使用
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")," ")
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")," ")
=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
中的可选条件格式:

=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")," ")
=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)," ")    

E2:E11中的可选条件:

=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")," ")
=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)," ")    

你能更清楚地了解J12:J18数据吗?你是如何得出每个月的数据的?2月(7日)是如何在1月(8日)之后出现的?@GowthamShiva well spotted应该是2月7日,1月8日更新了图片和描述有一个问题:如果存在非唯一的温度读数(例如示例中的
Apr=11
Sep=11
),它们对应的月份看起来是相同的(
Apr
)。这非常有效,只有一个问题。您将如何更改公式以使排序变得通用(如果您将月份名称命名为其他名称,则仍然有效). thanks@Athanatos:感谢您的坚持。通用排序将大大改变原始问题。此答案中使用的方法受益于数据的特定性,需要进行一些重大更改。通用排序本身就是一个有趣的问题,需要处理广泛的细微差别。