确定单元地址以了解循环结束的地方-EXCEL VBA

问题描述

嗨,我想知道如何使用.address来确定在迭代中应该在哪一行停止。因此,我的代码正在查找预定日期(每周一次)的单元格地址,当我输入日期时,它将自动查找匹配/最接近的日期。我的问题是,根据最接近/匹配日期所在的列,在日期行的下一个列中添加一个值。

z = CDate(x)
MsgBox z

For Each find In Sheet2.Range("B4:B183")

    If find = z Then
    MsgBox "found at :" & find.Address
    
        Do Until Sheet2.Range("C" & PaidRow) > find.Address
            Sheet2.Range("C" & PaidRow).Value = 0
        Loop
    End If 
Next

这是代码的一部分,我应该确定最接近/匹配日期的地址。

首先我将最接近/匹配日期的x值转换为实际日期,而不是excel值,例如44506 = 11/6/2021,然后for循环让我确定在放置msgbox find.address时正确的find.address。

但是我似乎无法在原始for循环之外使用find.address。

解决方法

您可以找到并使用找到日期的单元格,如下所示:

z = CDate(x)

Dim found as Range
Set found = Sheet2.Range("B4:B183").Find(z,lookat:=xlWhole)

If not found Is Nothing Then

    MsgBox "found at :" & found.Address

    found.Font.Bold = True 'for example

End If
,

Find找不到近似匹配,只有精确匹配。尝试使用Worksheetfunction.MATCH,如果需要近似匹配,则需要对数据进行排序。

根据排序顺序,您可以找到完全匹配或下一个更大或更小的近似值。然后,循环可以使用排序后的值来确定何时停止。

例如,您希望从7月开始的所有值以及您的日期按升序排序。因此,您寻找7月1日的比赛。您可以找到该日期或该日期之前的最后一个日期(可能是6月)。因此,如果根本没有7月的条目,那么下一个日期必须是7月。

因此,您将查看每个条目,直到遇到一个不在7月的日期。那就是您停止处理的时候。

,

因此,我想出了如何执行此操作的方法,我不知道它是否有效,但它是否有效,感谢您对Gmalc,Scott和Variatus的所有投入。

这是我根据斯科特的答案更新的代码。

z = CDate(x)

Set find = Sheet2.Range("B4:B183").find(z,lookat:=xlWhole)
 
Dim InfoCol,InfoRow,LastItemRow,MatchDate As Long

LastItemRow = find.Row

For MatchDate = PaidRow To LastItemRow

If LastItemRow = MatchDate Then

    Sheet2.Cells(MatchDate,3).Value = Range("G6").Value
    Sheet2.Cells(MatchDate,4).Value = Range("E8").Value
    Sheet2.Cells(MatchDate,1).Value = Range("E6").Value
    
    Else: 'Sheet2.Cells(MatchDate,3).Value = .Range(Sheet2.Cells(MatchDate,3).Value).Value
           
           Sheet2.Cells(MatchDate,3).Value = 0
           Sheet2.Cells(MatchDate,4).Value = Range("E8").Value
           Sheet2.Cells(MatchDate,1).Value = Range("E6").Value
    
        
        
End If

Next MatchDate

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...