小编Joh*_*n W的帖子

在最接近指定日期的列表中查找上一个日期

我想要VBA代码或公式将采用可变日期值并在列表日期范围内找到它.如果找不到我希望它找到最接近的前一个日期值的日期. VLOOKUP非常适合找到完全匹配,但我正在努力寻找代码以找到最接近的上一个日期.

我唯一的想法是创建一个循环,如果它不匹配它继续从变量日期减去一天,直到它可以在列表上找到匹配.这似乎不是最好或最有效的方法,我希望有人可以推荐一个更简单的解决方案.

例:

Variable Date = 01/26/2014

Date List
02/04/2014
01/27/2014
01/24/2014
01/13/2014
12/29/2013

Desired Result = 01/24/2014
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

excel vba date excel-vba excel-formula

3
推荐指数
1
解决办法
2万
查看次数

在vba中,从范围的底部执行FIND

下午好,

是否可以Find从范围的底部开始并进行处理?我想要的是我的代码首先找到一个位于主列表上的记录号.一旦找到记录编号,我希望它将该处理名称(offset记录编号的一个)分配给变量,然后在主列表中搜索具有相同名称的第一笔交易.

目前,我有代码找到记录号,将交易名称分配给变量,然后循环每个单元格直到找到匹配项.虽然这种方式有效,但循环处理时间明显慢于查找处理时间,我正在寻找最快的解决方案.

如果反向查找不可能,vlookup会工作吗?可能是,创建一个从记录号上方开始1行的范围到顶部并让vlookup找到最后一次出现?

任何帮助表示赞赏.

PendingBRow = ThisWorkbook.Sheets("PendingLog").Range("A65000").End(xlUp).Row
MasterBRow = ThisWorkbook.Sheets("MasterLog").Range("A65000").End(xlUp).Row

For D = 2 To PendingBRow
    With ThisWorkbook.Sheets("PendingLog").Range("A" & D)
        PendingRecNum = .Value
        PendingDealName = .offset(0, 3).Value
        PDLenght = Len(PendingDealName) - 4
        PendingDealName = Left(PendingDealName, PDLenght)
        PendingDealName = UCase(PendingDealName)
        PendingDealName = Trim(PendingDealName)
    End With

    With ThisWorkbook.Sheets("MasterLog").Range("B2:B" & MasterBRow)
        Set c = .Find(PendingRecNum, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstRow = c.Row - 1

            O = 1
            Do Until firstRow = O
                LastWorkedBy = ThisWorkbook.Sheets("MasterLog").Range("E" …
Run Code Online (Sandbox Code Playgroud)

excel vba find excel-vba vlookup

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel ×2

excel-vba ×2

vba ×2

date ×1

excel-formula ×1

find ×1

vlookup ×1