我有一个excel系列我用作数据库。第一列按日期按升序排序,但可以有多个具有相同日期的记录,例如
A B
1 15-Apr-2015 Carrot
2 15-Apr-2015 Yamagobo
3 16-Apr-2015 Turnip
4 17-Apr-2015 Parsnip
5 17-Apr-2015 Rutabaga
6 17-Apr-2015 Radish
7 18-Apr-2015 Daikon
(A列中的内容是格式化的日期,而不是文本字符串。)
我想得到的是第一条记录的日期大于或等于我正在搜索的记录,所以我有:
Dim searchDate As Date
searchDate = CDate("4/17/15")
Dim searchRange As Range
Set dbRange = Worksheets("My DB").UsedRange
Dim v As Variant
v = Application.Match(CLng(searchDate), dbRange.columns(1), 1)
我希望v现在包含第一行的索引,其中包含2015年4月17日的第A列,第4行。相反,它似乎将在2015年4月17日返回 last 行,6。
两个问题:
1)有没有办法使用Match()(或任何其他函数)指向匹配的第一个条目,而不是最后一个?
2)如果我给它一个Date类型作为匹配参数(因此是CLng()转换),Match()会变得怪异。这是预期的,还是我做了一些愚蠢的事情?
感谢。
答案 0 :(得分:0)
尝试使用Find代替匹配
获取单元格:
set MyRange = dbRange.Columns(1).Find(searchDate)
要获得该行:
MyRow= dbRange.Columns(1).Find(searchDate).row