我正在创建一个excel付费表,以便我可以密切关注我的工资。
我有两个工资率,
工作时间为周一至周四下午6点至8点,工作时间为9.30英镑 从周五下午6点到周一上午8点,工作时间为10.30英镑。我有一个列显示工资率,我希望自动填充excel,查看星期几,然后是开始时间,然后返回正确的工资率。
例如,
如果当天是周一,开始时间是下午6点,则返回9.30英镑 如果当天是星期五,开始时间是下午6点,则返回10.30英镑等等。
任何人对如何实现这一目标都有任何想法?相反,如果可能的话,这是基于公式而不是VBA,但如果它不能基于公式那么VBA就是。
提前致谢
答案 0 :(得分:0)
我不得不做一些假设,因为你的问题不清楚轮班可能的开始时间。你的措辞和例子让我相信你的班次总是在下午6点开始,而不管一天。我创建了一个可能的解决方案,或者基于不依赖于VBA的假设开始解决方案。我已经通过我的解决方案和屏幕截图包含指向excel工作簿的链接。 (我只允许2个链接与我当前的代表。)
正如Gowtham Shiva在评论中所说,截至目前为止你所拥有的内容会有所帮助。
我创建了两个表和一个名为“valDays”的命名范围。要使用工作簿,请在tblPay中输入您的班次的日期和开始时间。在tblRates中输入特定日期和时间的工资率。 valDays提供了一种将一周中某一天的文本转换为计算日期/时间序列号的数字的方法。
随时发表评论/给我留言澄清。我会尽力回复并根据需要改进解决方案。我希望您觉得这个答案很有帮助,并感谢您的反馈这是我第一次在Stack Overflow上提供答案。
我将假设您知道如何在excel中命名范围,创建表和重命名表。如果你不这样做,那么很多YouTubers和博客都会很好地介绍这些主题。 列出右侧列中的天数。 (我使用了列K.)“Sun”,“Mon”,“Tue”等。选择包含星期几的所有单元格,并将范围命名为“valDays”。
tblRates中的公式[Serial]: “= MATCH(tblRates [[#This row],[Day]],valDays,0)+ tblRates [[#This Row],[Time]]”
tblPay中的公式[Serial]: “= WEEKDAY([日期])+ [开始时间]”
tblPay中的公式[Rate]: “= INDEX(tblRates [速率],MATCH([序列],tblRates [串行],0))”
您可以下载excel文档并查看可能解决方案的这些屏幕截图。