Excel VBA:如何比较特定字符串
我遇到了一些问题,我不知道如何比较字符串 范例Excel VBA:如何比较特定字符串,vba,excel,Vba,Excel,我遇到了一些问题,我不知道如何比较字符串 范例 Dim DateStart as String Dim CompareDate as String DateStart = "01-05-15" 在CompareDatei中键入值02-05-15,如何比较01-05和02-05 我不想使用Dim DateStart作为日期 以及如何比较列而不是行? 我用于比较行的当前代码是: iRow = ws.Cells.Find(what:="*", After:=ws.Range("a1"), Searc
Dim DateStart as String
Dim CompareDate as String
DateStart = "01-05-15"
在CompareDate
i中键入值02-05-15,如何比较01-05和02-05
我不想使用Dim DateStart作为日期
以及如何比较列而不是行?
我用于比较行的当前代码是:
iRow = ws.Cells.Find(what:="*", After:=ws.Range("a1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
如果不使用“Dim DateStart as Date”,则在比较时可以使用“CDate(DateStart)”
如果需要特定格式,可以使用(例如):
如何比较01-05和02-05
由于您正在进行字符串匹配,请尝试以下操作
Sub Sample()
Dim DateStart As String
Dim CompareDate As String
CompareDate = "02-05-15"
DateStart = "01-05-15"
If Left(DateStart, (InStrRev(DateStart, "-", -1, vbTextCompare) - 1)) = _
Left(CompareDate, (InStrRev(CompareDate, "-", -1, vbTextCompare) - 1)) Then
MsgBox "Matches"
Else
MsgBox "Doesn't Match"
End If
End Sub
InStrRev
函数返回一个字符串在另一个字符串中第一次出现的位置(-
),从该字符串的结尾开始
或者你可以使用这个简单的代码
If Left(DateStart, 5) = Left(CompareDate, 5) Then
MsgBox "Matches"
Else
MsgBox "Doesn't Match"
End If
关于你的第二个问题,我很抱歉,我不明白你想要实现什么。也许你可以换个说法
编辑:您的意思是希望使用此搜索顺序:=xlByColumns
而不是搜索顺序:=xlByRows
问题是当我以“dd-mm-yy”格式键入时,CDATE()将其存储到“yy-mm-dd”,因此每次我的日期都将变为年,年份变为日期…>。您可以使用Format获得所需的输出。你需要什么格式?呃~事实上我已经找到了一种方法,但还没有尝试编码,那就是将字符串转换为数组并进行比较~代码可能有点长,有点乱,但我认为应该可以工作:D~非常感谢:DThanks非常感谢:)我想你已经回答了我的第二个问题,但我找到了另一种方法:D~但你已经找到了让我知道一个更好的方法:D~
If Left(DateStart, 5) = Left(CompareDate, 5) Then
MsgBox "Matches"
Else
MsgBox "Doesn't Match"
End If