计划: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。
提前致谢。
答案 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)
。
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)