我希望有人能够指出我正确的方向,我试图自动化一个电子表格的一部分,显示一个人计划的工作时间与他们实际做的时间相比。数据来自工作表,工作表分为几个月和部门。
有没有办法让主仪表板上的引用表根据计算机日期对某个列进行vlookup / index索引?
即。对于May,它将在may的计划和实际小时列中查找,然后在6月它将在June列中搜索相同的数据。
通常情况下,我会发布一些代码,但我甚至不知道从哪里开始。
答案 0 :(得分:0)
你在提问时提到了VLOOKUP。 要在VBA使用中使用它,WorksheetFunction.Vlookup(),但是如果你想的话,你似乎可以完全避免使用VBA。以下是一些感兴趣的公式:
如果您想按当前日期搜索月份,可以使用这种vlookup(或MATCH()或HLOOKUP(),如果这些是您指定的列)
=VLOOKUP(TEXT(TODAY(),"mmmm"),Range,1,FALSE)
如果您使用3个字母的月份,请使用“mmm”
如果月份在静态列号中,可以使用MONTH()函数。
=MONTH(TODAY())
“根据计算机日期索引某列?” = TODAY()获取计算机的日期。 我倾向于使用MATCH()来获取月份列(在本例中我假设月份在第1行)
=MATCH(TEXT(TODAY(),"mmmm"),1:1,0)
然后,您可以使用INDIRECT()匹配特定月份列和部门行(如果是2D格式),或者使用INDIRECT()与SUMIFS()匹配(如果您想要总计小时数)。 如:
=INDIRECT("'Sheet'!R" & MATCH("department_name",A:A,0) & "C" & MONTH(TODAY()), FALSE)
答案 1 :(得分:0)
感谢您对此问题的所有帮助,不幸的是,我无法完全理解已经提出的建议,尽管我已经能够解决这个问题(尽管这是一个混乱的解决方案)< / p>
=IF($F$95="March",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,2,FALSE),
IF($F$95="April",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,3,FALSE),
IF($F$95="May",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,4,FALSE),
IF($F$95="June",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,5,FALSE),
IF($F$95="July",VLOOKUP(D97,'Planned Hours'!$A$1:K37,6,FALSE),
IF($F$95="August",VLOOKUP(D97,'Planned Hours'!$A$1:K37,7,FALSE),
IF($F$95="September",VLOOKUP(D97,'Planned Hours'!$A$1:K37,8,FALSE),
IF($F$95="October",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,9,FALSE),
IF($F$95="November",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,10,FALSE),
IF($F$95="December",VLOOKUP(D97,'Planned Hours'!$A$1:$K$37,11,FALSE)))))))))))
但它有效。再次感谢所有伸出援助之手。
- 编辑 -
顺便说一下,这最终不在VBA中。