【问题标题】:Defining current year and next year in code在代码中定义当前年份和明年
【发布时间】:2018-12-09 20:31:15
【问题描述】:

如何按当年和明年拆分数据?

我将有一个专用于当年 (2018) 的标签和一个专用于明年 (2019) 的标签。

我的问题是,一旦 2019 年 1 月 1 日到来,我的代码会将 2019 年视为当年,将 2020 年视为下一年。

我能想出两个解决方案。

首先,我将日期列格式化为“YYYY”(即 2018 年)。然后在一个单独的选项卡上,我将有一个 单元框,其中包含当前年份(可以每年更改)。 countif 公式将只提取年份等于 Cell box 的项目。

第二。我在电子表格上为“YYYY”设置了日期列。它旁边的列将设置为当前年份“YYYY”。我将减去这两个以获得“1 和 0”。然后我的 Countif 公式将根据您正在查看的工作表在减法列中查找“1 和 0”。

有更好的主意吗?

【问题讨论】:

  • 您可以使用Year(Now()) 获取当前年份,而不是硬编码年份,而明年将是Year(Now()) + 1
  • 您的年份是如何定义的?是日历年吗?
  • 日历年。我喜欢“年(现在())+ 1”,我没有意识到我可以做到这一点

标签: excel vba


【解决方案1】:

您可以使用以下方法获取当前年份,而不是硬编码年份:

Year(Now())

明年会是:

Year(Now()) + 1

【讨论】:

    【解决方案2】:

    您可以只显示一个user form,让用户通过两个日期选择器或简单的输入框指定相关年份进行计算。

    或者您甚至可以完全远离 Excel/VBA,并通过使用(例如)python 脚本来解决这个问题,该脚本使用您的 excel 文件(或某些 CSV)作为源。 如果您真的不需要 VBA/Excels 功能,或者它甚至以某种方式限制您,例如创建报告,这可能是一个不错的选择。

    【讨论】:

    • 我在考虑输入框。并让用户插入年份。我只需要弄清楚如何指定输入框中的数据需要等于电子表格上的年份。你知道我是否可以在 VBA 的 countif 公式中做到这一点?我当前的代码如图所示。 Sheets("HR 数据摘要").Range("L4") = Application.WorksheetFunction.CountIfs(.Range("V2:V" & finRow), ">0", .Range("S2:S" & finRow) , "=21", .Range("L2:L" & finRow), "=January", .Range("H2:H" & finRow), "=Employee")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 2013-02-15
    相关资源
    最近更新 更多