创build一个在每月初重置的Excel单元格

我试图创build一个Excel单元格,告诉我是否有人已经支付月租金。 因为租金是每月租金,所以我希望在每个月初重置为False,直到有人将其更改为true,之后在新月份时再次重置为false。

我已经尝试通过创build下面的单元格函数=if(Day(Today())==1, False, True)演奏Date和Time函数,但是明显的问题是单元格不会在本月的第一天。 我应该如何解决这个问题? 是否还有其他的Excel函数?

这听起来像你在找2张桌子。

  1. 显示租户,付款和date的分类帐表
  2. 显示汇总信息的租户表,如果他们还没有支付月份,请告诉他们

下面的示例表

莱杰

 +--------+------------+------------+ | Tenant | PaidDate | PaidAmount | +--------+------------+------------+ | Paul | 2015-06-01 | $750 | | Peter | 2015-06-15 | $600 | | Mary | 2015-06-29 | $500 | | Paul | 2015-07-01 | $750 | | Peter | 2015-07-15 | $600 | | Mary | 2015-07-29 | $500 | | Paul | 2015-08-01 | $750 | +--------+------------+------------+ 

承租人

 +--------+------------+ | Tenant | LastPaid | +--------+------------+ | Peter | 2015-07-15 | | Paul | 2015-08-01 | | Mary | 2015-07-29 | +--------+------------+ 

Tenant表中的LastPaid列是一个计算列,指向公式=AGGREGATE(14,6,ledger[PaidDate]/(ledger[Tenant]=[@Tenant]),1) (在线信息在这里 aggregate() ,但基本上这是从租户的分类帐表中获取最近的date)。 这假定你已经将构build表格格式化为数据表格(用ctrl + t ),并将它们重新命名为“tenant”和“ledger”(用alt + j + t + i )。

之后有几个选项,但最简单的可能是租户表( alt + h + l + n )上的条件格式选项。 我使用=$B2<DATE(YEAR(TODAY()),MONTH(TODAY()),1)当表开始在单元格A1 。 毕竟,它最终看起来像下面

CustomConditionalFormatting

请随时评论任何问题或修改任何更新的OP。 希望这可以帮助!

我没有testing保存/ getsetting方法…但它可能适用于您的应用程序。 如果你有任何VBA的经验,你可以找出出现的任何扭曲。 如果没有,评论,我会尽力帮助。

 sub datechecker() dim y as byte dim x as byte on error resume next y = getsetting("myapp","settings","mysetting1") x = day(now) if y > x then 'change the range to match the cells that should be changed to false ThisWorkbook.Worksheets("Sheet1").Range("D1:D300") = "False" end if y = x savesetting ("myapp", "settings", "mysetting1", y) end sub 

链接:如何修改您的范围,如果有必要: http : //excelmacromastery.com/Blog/?p=165date和时间variables: http : //www.classanytime.com/mis333k/sjdatetime.html分配variables: 什么关键字实际上在VBA中做?