Vba 基于今天返回会计月';s date(或)VLOOKUP返回合并单元格的内容

Vba 基于今天返回会计月';s date(或)VLOOKUP返回合并单元格的内容,vba,excel,excel-formula,vlookup,Vba,Excel,Excel Formula,Vlookup,我有一个基于日期范围(C1=startdate,D1=enddate)动态提取数据的工作簿。当用户进入工作簿时,Excel需要选中TODAY(),然后用该会计月的第一天(可以是该月的任何数字天)填充C1中的startdate。因此,如果用户在2014年5月2日输入工作簿,则应在C1中填充起始日期,即2014年4月30日(即财政月开始的时间) 我在单独的工作表中设置了会计日期,以供参考(如果需要,请参见图)。在我的示例中,如果今天()等于2014年5月2日(在图中,红方块是5月1日),我不确定如何

我有一个基于日期范围(C1=startdate,D1=enddate)动态提取数据的工作簿。当用户进入工作簿时,Excel需要选中TODAY(),然后用该会计月的第一天(可以是该月的任何数字天)填充C1中的startdate。因此,如果用户在2014年5月2日输入工作簿,则应在C1中填充起始日期,即2014年4月30日(即财政月开始的时间)

我在单独的工作表中设置了会计日期,以供参考(如果需要,请参见图)。在我的示例中,如果今天()等于2014年5月2日(在图中,红方块是5月1日),我不确定如何从左侧的网格样式返回2014年4月30日。我尝试在右侧设置一个更传统的表,并使用VLOOKUP,但当Excel在N列中找到2014年5月2日时,它会将其旁边的列读取为0,而不是返回整个合并单元格的值


假设您像我在英国工作的公司一样使用财务周,您可以在下图中创建一个参考表:

这将生成以下数据(手动添加的会计月和季度)。列A使用WeekNum将每个会计周的开始日期更改为日历周编号。C2手动设置为会计年度的第一天

从这里可以使用以下公式:

=VLOOKUP(WEEKNUM(TODAY(),1),A:F,2,FALSE)
返回会计周或会计月的列。如果您想要会计月开始,您可以将其添加为列,或者使用下面的从月号和年开始生成它

"Year Start"+(28*("Month Number"-1))

更新:


如果计算会计周数和日历周数之间的差值,则可以将WeekNum结果调整为“应会计周”。这将减少表中所需的逻辑。

我已取消右侧单元格的合并,然后将以前合并的每个月的日期向下拖动到同一区域。这是可行的,但我认为应该有更好的方法。你看过workday()函数吗?