VBA与具有重复值的列匹配

时间:2014-12-09 07:05:36

标签: excel vba excel-vba

我有一个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()会变得怪异。这是预期的,还是我做了一些愚蠢的事情?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用Find代替匹配

获取单元格:

set MyRange = dbRange.Columns(1).Find(searchDate)

要获得该行:

MyRow= dbRange.Columns(1).Find(searchDate).row