查找与负值关联的日期(Microsoft Excel)
Stuart在工作表中有一系列阅读材料。在第一列中,他具有与读数相关的日期,在第二列中,他具有实际读数。 Stuart希望有一个公式可以返回读数为负的第一个日期。换句话说,该公式应在第二列中查找第一个为负的值,然后返回与该值关联的日期。
第二列中可以有多个负值,但他只需要与第一个负值关联的日期即可。
有许多方法可以解决此问题。所有方法都假定A列中的日期按升序排列,并且B列中的读数没有任何可辨别的顺序。 (换句话说,在任何给定日期,读数都可能在0上下波动。)
假设您对工作表的布局有一定的控制权,则可以在C列中添加一个中间工作列,用于指示值何时为负。只需在每个读数右侧的C列中放置一个这样的公式:
=IF(B1<0,A1,"")
如果B中的值小于0(负),则此公式返回A列中的日期,否则不返回任何内容。您需要做的就是在C列中查找最小值:
=MIN(C:C)
将结果格式化为日期,并表示读数首次变为负数的日期。
另一种方法是放弃中间列的使用,并使用数组公式确定日期。假设数据在A1:B42范围内,则可以使用以下任何公式:
=MIN(IF(B1:B42<0,A1:A42,"")) =OFFSET($A$1,MATCH(TRUE,$B$1:$B$42<0,0)-1,,,) =INDEX(A:A,MIN(IF(B1:B42<0,ROW(B1:B42)))) =INDEX(A1:A42,MATCH(TRUE,B1:B42<0,0)) =INDIRECT("A"&MIN(IF(B1:B42<0,ROW(B1:B42))),TRUE)
请记住,这些都是数组公式,因此您需要按Shift + Ctrl + Enter输入任意一个。将结果格式化为日期,这就是您想要的答案。
如果愿意,还可以使用一个简单的宏来确定日期:
Function GetFirstNegative(rngdata) Dim c As Variant For Each c In rngdata If c < 0 Then GetFirstNegative = c.Offset(0, -1) Exit Function Else GetFirstNegative = "All Data is Positive" End If Next End Function
在工作表中,您可以通过以下方式使用此用户定义的函数:
=GetFirstNegative(B1:B42)
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(12321)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:
链接:/ excel-Finding_the_Date_Associated_with_a_Negative_Value [查找与负值关联的日期]。