Excel 如何将一列中的日期与另一列中同一行中的单元格进行比较?
我觉得这应该是一个足够简单的任务,但我没有足够的经验与Excel VBA知道如何处理它。基本上,我想看一行中的两个单元格,如果它们都有特定的日期,我想做些什么。这两个单元格将始终位于两个特定列之一 例如,如果D2和I2中的日期都早于11月,那么我想对该行执行一些操作,并移动到下一行。然后,如果D3和I3中的日期都早于11月,那么我想对那一行做点什么,然后移到下一行。等等,等等 我的问题不在于如何完成所有步骤。这实际上是关于如何进行比较。我知道如何通过执行以下操作仅选择这两列中的单元格:Excel 如何将一列中的日期与另一列中同一行中的单元格进行比较?,excel,vba,Excel,Vba,我觉得这应该是一个足够简单的任务,但我没有足够的经验与Excel VBA知道如何处理它。基本上,我想看一行中的两个单元格,如果它们都有特定的日期,我想做些什么。这两个单元格将始终位于两个特定列之一 例如,如果D2和I2中的日期都早于11月,那么我想对该行执行一些操作,并移动到下一行。然后,如果D3和I3中的日期都早于11月,那么我想对那一行做点什么,然后移到下一行。等等,等等 我的问题不在于如何完成所有步骤。这实际上是关于如何进行比较。我知道如何通过执行以下操作仅选择这两列中的单元格: Unio
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-谢谢你的评论。正如迈克所说,我写这篇文章只是作为一个概念,所以这就是为什么它有点拼凑。然而,由于编写糟糕的代码是一种不好的做法,所以我做了一些编辑,以改进其他人,他们可能会看到答案。