【问题标题】:Check date based on startDate and endDate根据 startDate 和 endDate 检查日期
【发布时间】:2015-06-10 08:26:17
【问题描述】:

我正在尝试设置一个函数,该函数将能够检查从一张表 (sheet1) 到 2 列的日期:Sheet2 中的 startDate 和 endDate。如果有匹配,那么我想将位于 sheet2 上的一个单元格中的值复制到特定单元格(检查日期所在的同一行)到 sheet1 中。 我写了一些代码,但后来我意识到我的逻辑不好。 我还找到了this link on stackoverflow website...

my xls file - function is in the module 3 "checkDate"

这是代码..我需要以某种方式查找函数..也许我需要插入两个迭代器(2个for循环?)

Sub CheckDate()

Dim d1 As Date
Dim d2 As Date
Dim datumPok As Date
Dim s As String
Dim i As Long

Dim LR As Long

LR = Range("K" & Rows.Count).End(xlUp).Row

For i = 2 To LR

    d1 = ActiveWorkbook.Worksheets("Glasnik").Cells(i, 2).Value

    d2 = ActiveWorkbook.Worksheets("Glasnik").Cells(i, 3).Value

    With .Range("K" & i)

        datumPok = ActiveWorkbook.Worksheets("Spisak").Cells(i, 11)

        If d1 < datumPok < d2 Then
            MsgBox "opaaa"

            s = ActiveWorkbook.Worksheets("Glasnik").Cells(i, 4).Value

            ActiveWorkbook.Worksheets("Spisak").Cells(i, 6).Value = s

        Else
            MsgBox "test"

        End If
     End With
Next i
End Sub

我真的很喜欢这个..谢谢大家!

【问题讨论】:

  • 像伦敦一样昏暗?你有没有运行过这段代码?
  • 对此很抱歉,但 Dim j as Long 无关紧要。我会编辑它。再次抱歉
  • 我怀疑至少 If d1 &lt; datumPok &lt; d2 Then 行是您问题的很大一部分,因为您不能在 VBA 中使用这样的逻辑语句。尝试改用If d1 &lt; datumPok And datumPok &lt; d2 Then,因为这是正确的语法。如果您的代码仍然不起作用(我只是略读,寻找非常明显的错误),您能否尝试更简洁地说明您的问题,因为它真的不清楚您在问什么,或者您的问题在哪里。

标签: vba excel date


【解决方案1】:

我找到了解决方案!

使用一些数学公式进行普通查找就足够了。

=LOOKUP(2,1/((G1>=$A$1:$A$24)*(G1<=$B$1:$B$24)),$C$1:$C$24)

假设日期在 G1 列中..

谢谢大家! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多