我正在尝试编写一个 Excel 公式,可以将其拖动到一行单元格上,以给出两个指定日期之间每个月的天数。例如:
A B C D E F
1 | START DATE | END DATE | Jan | Feb | Mar | Apr |...
---------------------------------------------------------
2 | 10/02/17 | 15/03/17 | 0 | 19 | 15 | 0 |...
Run Code Online (Sandbox Code Playgroud)
另一个复杂之处是结束日期可能留空,表明结束日期应视为今天。我可以在从 C2 开始的单元格中放入公式,但必须保留 A 列和 B 列供用户输入。
我使用大量嵌套的 if 语句取得了一些进展,但如果结束日期为空,我很难处理它。
有人可以帮忙吗?
*编辑
到目前为止,我没有显示我写的公式,因为我担心它有点混乱,但根据要求,我现在在下面显示(这个公式来自 C2)
=IF(AND($A2<C$1,$B2<D$1),DAY(A2),IF($A2>=D$1,0,IF(AND($A2<C$1,$B2=""),IF(TODAY()<C$1,0,IF(TODAY()>C$1,IF(TODAY()<D$1,DAY(TODAY()),D$1-C$1),IF(TODAY()<D$1,INT(TODAY()-$A2),$D1-$C1))),IF(AND($A2>=C$1,$B2=""),IF(TODAY()<D$1,INT(TODAY()-$A2+1),D$1-$A2),IF(AND($A2>=C$1,$B2<D$1),$B2-$A2+1,IF(AND($A2<C$1,$B2<C$1),0,IF(AND($A2>=C$1,$B2>=D$1),D$1-$A2,IF(AND($A2<C$1,$B2<D$1),DAY(B2),IF(AND($A2<C$1,$B2>=D$1),D$1-C$1,0)))))))))
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个“Launcher”数据库,其中包含 VBA 代码,该代码将打开第二个受密码保护的数据库。然后我可以将启动器数据库转换为 accde,这样包含密码的 VBA 就无法读取。
到目前为止我有以下代码。
Private Sub Form_Load()
Dim acc As Access.Application
Dim db As DAO.Database
Dim strDbName As String
strDbName = "C:\database Folder\secureDB.accdb"
Set acc = New Access.Application
acc.Visible = True
Set db = acc.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=swordfish")
acc.OpenCurrentDatabase (strDbName)
Application.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)
当启动器数据库打开时,会加载一个表单,该表单随后会触发上述代码。它有效,但问题是最后一行,它旨在仅关闭启动器数据库,但关闭两个数据库。我也尝试过使用 Shell 打开主数据库,但无法通过这种方式传递密码。
如何关闭第一个数据库,同时保持第二个数据库打开?