我正在尝试创建一个Excel单元格,告诉我是否有人支付了该月的租金。因为租金是按月计算的,所以我希望单元格在每个月的开始时重置为False,并保持这样,直到有人将其更改为true,之后当新的月份时它将再次重置为false。
我试过通过创建以下单元格函数=if(Day(Today())==1, False, True)
来尝试使用日期和时间函数,但是明显的问题是单元格的第一天之后单元格不会保持为假。我该如何处理这个问题?我应该使用其他任何Excel函数吗?
答案 0 :(得分:1)
听起来你正在寻找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 |
+--------+------------+
租户表中的LastPaid
列是一个计算列,指向公式为=AGGREGATE(14,6,ledger[PaidDate]/(ledger[Tenant]=[@Tenant]),1)
的Ledger表(aggregate()
here上的在线信息,但基本上这将从租户的分类帐表中获取最新日期。这假设您已将构建表格式化为数据表(使用 ctrl + t )并将其重命名为" tenant"和"分类帐" ( alt + j + t + i )。
之后您有几个选项,但最简单的可能是租户表上的条件格式选项( alt + h + l + n )。当表格在单元格=$B2<DATE(YEAR(TODAY()),MONTH(TODAY()),1)
中开始时,我使用了A1
。毕竟,它最终看起来像下面的
。
如有任何问题,请随时发表评论或通过任何更新修改OP。希望这有帮助!
答案 1 :(得分:0)
我还没有测试过save / 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=165 日期和时间变量:http://www.classanytime.com/mis333k/sjdatetime.html 分配变量:What does the keyword Set actually do in VBA?