Excel-查找不在列表中的第二天

Excel-查找不在列表中的第二天,excel,Excel,我有一份按时间顺序排列的日期(学校假期)清单。我想给它一个日期,让公式在第二天返回列表中没有的 这是我的日期列表: January 1 January 2 January 3 January 28 February 11 February 15 etc 1月1日应返回1月4日 另一方面,1月27日应该返回1月27日(因为它不在列表中) 1月28日应返回1月29日,以此类推 我看了又看,但似乎找不到与此相关的任何东西。我需要在VBA中做些什么吗?还是有更简单的方法只使用函数 谢谢! Dan最简单

我有一份按时间顺序排列的日期(学校假期)清单。我想给它一个日期,让公式在第二天返回列表中没有的

这是我的日期列表:

January 1
January 2
January 3
January 28
February 11
February 15 etc
1月1日应返回1月4日 另一方面,1月27日应该返回1月27日(因为它不在列表中) 1月28日应返回1月29日,以此类推

我看了又看,但似乎找不到与此相关的任何东西。我需要在VBA中做些什么吗?还是有更简单的方法只使用函数

谢谢!
Dan

最简单的方法是编写VBA函数

步骤:

1:说出假期的范围。为此,请选择“假日”列,并在“名称”框中输入“假日”

2:按alt+F11显示VBA编辑器

3:在VBA中:插入>模块

4:输入此代码

Option Explicit

Public Function NextSchoolDay(StartDate As Date)

Dim Holidays As Range
Set Holidays = Range("Holidays")

NextSchoolDay = StartDate
Do
    NextSchoolDay = NextSchoolDay + 1
Loop Until Not IsNumeric(Application.Match(CLng(NextSchoolDay), Holidays, 0))

End Function
5:您现在可以使用公式=NextSchoolDay(日期)


您使用的是哪个版本的Excel?在Excel 2010或更高版本中,您可以使用
WORKDAY.INTL
功能,例如,您的假期日期在
A1:A20
中,参考日期在
D1

=WORKDAY.INTL(D1-1,1,“0000000”,$A$1:$A$20)


它使用
D1-1
并找到之后的下一个“工作日”,其中“0000000”将所有天数定义为工作日(A1:A20中列出的假日除外),因此这可能是D1本身或之后的下一个非假日

这是一个非常好的答案/教程。非常感谢!虽然另一个答案似乎简单一些,但这个答案为未来的应用扩展了一个有趣的方向。非常感谢爱德华!另一个答案是更好的解决方案——我不知道“workday”函数。您还应该将该选项标记为正确答案。谢谢,这是我第一次使用stackoverflow。你们俩都帮了大忙。我希望我有更多的代表,这样我就可以给你们“荣誉”或其他什么;)我想我得用我有限的知识去帮助别人。再次感谢!有趣。我以前看过这个函数,但没有意识到在定义正常工作日(在0000000部分)的基础上,您还可以在此基础上定义其他工作日。伟大的谢谢你的回答!