Excel 2010:从VLOOKUP生成的日期开始下一个月的第一个星期二

时间:2014-03-11 12:10:52

标签: excel date excel-formula excel-2010

计划:Excel 2010年 经验等级:基本

你好, 我正在创建一个Invoice,它通过VLOOKUP从其他工作表中提取数据,页面中充满了公式和代码(我很满意),但是我在设置日期时遇到了问题。

问题:
当我使用公式来获取我的“下个月的第一个周期”引用单元格(F3)时,该公式不起作用。 (F3)中的日期已由VLOOKUP生成,因此我认为我的新公式错误,因为它没有“日期”,只是代码的结果。

以下是我的公式:

Cell(F3)    =IF(TEXT(VLOOKUP($F$2,OrdSum,24,FALSE),"mmm-dd-yyyy")="","",(TEXT(VLOOKUP($F$2,OrdSum,24,FALSE),"mmm-dd-yyyy")))

结果:Jan-31-2014(这是拉动销售月份的最后一天,我每月从我的OrdSum手动写入,我不希望它动态)。

Cell(A14)    =((EOMONTH(F3,0)+1)+7)+CHOOSE(WEEKDAY((EOMONTH(F3,0)+1)),2,1,0,6,5,4,3)

结果:#VALUE!

但是,如果我在任何单元格中都有一个硬编码日期,则该公式可以运行并返回11/02/2014

即使是简单的=EOMONTH(F3,1)也不起作用,会导致#VALUE!错误。

有解决方法吗?或者我也必须在发票上手动写入EOM。

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果VLOOKUP已经提取日期,那么您真的不需要TEXT部分(因为如果VLOOKUP返回了TEXT,您就不需要它了空白,00-01-1900无论如何都会将其转换为=IF(VLOOKUP($F$2,OrdSum,24,FALSE)="","",VLOOKUP($F$2,OrdSum,24,FALSE)) ,这应该足够了:

mmm-dd-yyyy

对于细胞F3。您只需要通过自定义格式或日期格式将F3格式化为=EOMONTH(F3,0)+15-WEEKDAY(EOMONTH(F3,0)+5)

编辑:@Barryhoudini有一个更简单的公式,适用于本月的第二个星期二。为此我很有信心,我在这里再详细说明一下:

5

将给出该月的第二个星期二的日期。最后一个=EOMONTH(F3,0)+15-WEEKDAY(EOMONTH(F3,0)+(7-3)) 决定了一周中的哪一天。您可以像这样重写它以使其更简单:

3

0 or 7 Sunday 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6 Saturday 周三。您可以将最后一个数字更改为:

{{1}}

答案 1 :(得分:1)

以下公式以牺牲一些冗长为代价,取消了VLOOKUP(它总是使电子表格变得脆弱)以及任何格式化考虑因素。

如果单元格A1包含日期,则

=1 + EOMONTH(A1,0) + MOD(3 - WEEKDAY(1 + EOMONTH(A1,0)),7)

返回的日期是下个月的第一个星期二。星期二的工作日值为3,这就是为什么这个字面值显示为MOD(中的第一个字词。

如果你想集中精力,比如周四(工作日值为5),那么写一下

=1 + EOMONTH(A1,0) + MOD(5 - WEEKDAY(1 + EOMONTH(A1,0)),7)