【问题标题】:Is there a way retrieve a value that falls between 2 dates?有没有办法检索两个日期之间的值?
【发布时间】:2021-01-11 07:02:38
【问题描述】:

我正在尝试构建一个 VBA 代码,其中我有 2 个日期用作日期范围。使用此日期范围,我试图将其与表中每一行中的日期进行比较。如果表格日期在日期范围内,我也想在表格中检索特定值。

例子:

日期范围: 02/01/2021 - 07/01/2021

颜色在 A 列,日期在 B 列

红色 - 2021 年 3 月 8 日 橙色 - 2021 年 9 月 1 日

对于这个例子,我需要它返回“红色”

【问题讨论】:

  • 分享您目前拥有的代码将是一个好主意。在您的情况下,它可能有助于我们了解您是如何获得这两个日期的以及您打算如何处理结果,即可能有多个结果,那么您将如何存储这些结果,您将如何处理它们,或者您只是试图找到第一次出现...

标签: excel vba


【解决方案1】:

是的,有……

如果您尝试,请记住首先在代码的 CONFIG 部分设置正确的值。

Sub RetrieveValue()

Dim start_date, end_date As Date
Dim dates_col, db_start_row, db_end_row As Integer
Dim counter, values_col, retrieve_values_col As Integer

'CONFIG THIS BEFORE YOU RUN THE MACRO
'--------------------------
retrieve_values_col = 4   'column number where you want to retrieve the values
values_col = 2            'column where all the values are
dates_col = 3             'in what column are the dates?
db_start_row = 3          'in what row does the data start?
start_date = Date - 4     'set the date interval
end_date = Date + 3       'DATE is a function that returns todays date
'--------------------------

db_end_row = Cells(Rows.Count, dates_col).End(xlUp).Row

For counter = db_start_row To db_end_row

    If Cells(counter, dates_col) >= _
    start_date And Cells(counter, dates_col) <= end_date Then
    
        Cells(counter, retrieve_values_col) = Cells(counter, values_col)
        
    End If

Next counter

End Sub

日期必须如下图所示设置,宏才能工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2022-01-22
    • 2021-12-11
    相关资源
    最近更新 更多