Excel 如何将一列中的日期与另一列中同一行中的单元格进行比较?

Excel 如何将一列中的日期与另一列中同一行中的单元格进行比较?,excel,vba,Excel,Vba,我觉得这应该是一个足够简单的任务,但我没有足够的经验与Excel VBA知道如何处理它。基本上,我想看一行中的两个单元格,如果它们都有特定的日期,我想做些什么。这两个单元格将始终位于两个特定列之一 例如,如果D2和I2中的日期都早于11月,那么我想对该行执行一些操作,并移动到下一行。然后,如果D3和I3中的日期都早于11月,那么我想对那一行做点什么,然后移到下一行。等等,等等 我的问题不在于如何完成所有步骤。这实际上是关于如何进行比较。我知道如何通过执行以下操作仅选择这两列中的单元格: Unio

我觉得这应该是一个足够简单的任务,但我没有足够的经验与Excel VBA知道如何处理它。基本上,我想看一行中的两个单元格,如果它们都有特定的日期,我想做些什么。这两个单元格将始终位于两个特定列之一

例如,如果D2和I2中的日期都早于11月,那么我想对该行执行一些操作,并移动到下一行。然后,如果D3和I3中的日期都早于11月,那么我想对那一行做点什么,然后移到下一行。等等,等等

我的问题不在于如何完成所有步骤。这实际上是关于如何进行比较。我知道如何通过执行以下操作仅选择这两列中的单元格:

Union(范围(单元格(2,4)、单元格(Rows.Count,4).End(xlUp))_
范围(单元格(2,9),单元格(Rows.Count,9)。结束(xlUp))。选择
但后来我突然想到,我不知道如何比较这两列各自的单元格。我只知道如何循环遍历一列的每个单元格


如果有任何帮助,我们将不胜感激。

只循环一列,然后使用
Offset
方法进行比较

选中此项:

Option Explicit

Sub CheckTwoCols()

Dim wks As Worksheet, lastrow As Long, rng As Range, cel as Range

Set wks = Sheets(1) 'change sheet reference to suit your needs

With wks

    lastrow = .Range("D" & .Rows.Count).End(xlup).Row

    Set rng = .Range("D2:D" & lastrow)

    For each cel in rng

        'column I is 5 columns to the right of column D
        If cel < "11/1/2012" and cel.offset(,5)  < "11/1/2012" Then

             'process code

        End If 

   Next

End With

End Sub
选项显式
子检查TwoCols()
Dim wks作为工作表,最后一行作为长,rng作为范围,cel作为范围
设置wks=Sheets(1)更改图纸参考以满足您的需要
有工作
lastrow=.Range(“D”和.Rows.Count).End(xlup).Row
设置rng=.Range(“D2:D”和lastrow)
对于rng中的每个cel
'第I列是D列右侧的5列
如果cel<“11/1/2012”和cel.offset(,5)<“11/1/2012”,则
'过程代码
如果结束
下一个
以
端接头

一些改进意见:始终在代码中使用
Range.Value
,甚至更好地使用
Value2
。2012年11月1日不是VBA的日期,它是11除以1除以2012,即2012年11月12日。。。您的代码中有一些有趣的假设(为什么
工作表(1)
?)。变量的命名不是很有解释性(
rng
cel
),特别是如果
过程代码中有更多代码的话。谢谢你,斯科特,我知道有一种更简单的方法,但我忘了按偏移量@K_B,你是对的,斯科特的代码并不完美,但我一直在寻找一个想法,而不是一个完美的执行,所以它对我很好。希望其他人看到你的评论。@K_B-谢谢你的评论。正如迈克所说,我写这篇文章只是作为一个概念,所以这就是为什么它有点拼凑。然而,由于编写糟糕的代码是一种不好的做法,所以我做了一些编辑,以改进其他人,他们可能会看到答案。