如何遍历列中的单元格,并在 Excel VBA 中查找列表的最新日期

Bha*_*abu 0 excel vba excel-automation

实际工作中,通过环列A具有与一定范围内相同的值,该范围要检查的最后日期与注释列B和打印带有日期在注释列C好心帮我找到这个解决方案问题.. 或找到此问题解决方案的指南...请查看屏幕截图以获取清晰信息.. 提前感谢专家

在此处输入图片说明

ASH*_*ASH 5

循环可能是所有计算机编程主题中最强大的东西。请参阅以下示例,了解有关如何实现目标的一些想法。

对于每个示例的范围数据中的每个单元格

在 Excel 中编程 VBA 时,最常见的事情之一是循环指定范围内的单元格集合,如下例所示,它将“数据”工作表上的 4 个单元格的地址和值打印到立即窗口:$B$2:a、$C$2:b、$B$3:1、$C$3:2。

Dim rng As Range: Set rng = Application.Range("Data!B2:C3")
Dim cel As Range
For Each cel In rng.Cells
    With cel
        Debug.Print .Address & ":" & .Value
    End With
Next cel
Run Code Online (Sandbox Code Playgroud)

循环遍历每个示例的行数据中的单元格

下面的代码显示了如何循环遍历行中 RowIndex:=2 的单元格。应用于右侧工作表中的数据,这将返回 1, 2。由此我们看到行是从 rng 的起点开始计算的,因此该行在工作表中为 3,在 rng 中为 2。此外,仅采用设置范围 rng 内的单元格。

Dim rng As Range: Set rng = Application.Range("Data!B2:C3")
Dim i As Integer
For i = 1 To rng.Rows.Count
    Debug.Print rng.Cells(RowIndex:=2, ColumnIndex:=i).Value
Next
Run Code Online (Sandbox Code Playgroud)

循环遍历列中的单元格

下面的代码显示了如何使用 ColumnIndex:=B 遍历列中的单元格。应用于右侧工作表中的数据,这将返回 a, 1, 2。由此我们看到列是从 rng 的起点开始计算的,因此该列在工作表中为 C,在 rng 中为 B。此外,仅采用设置范围 rng 内的单元格。

Dim rng As Range: Set rng = 
Dim i As Integer
For i = 1 To rng.Rows.Count
    Debug.Print rng.Cells(RowIndex:=i, ColumnIndex:="B").Value
Next
Run Code Online (Sandbox Code Playgroud)

循环遍历范围内的列

下面的代码显示了如何遍历范围 B2:C4 中的列。应用于右侧工作表中的数据,这将返回 2、3。由此我们看到列是从工作表的起点开始计算的。

Dim rng As Range: Set rng = Application.Range("B2:C4")
Dim col As Range
For Each col In rng.Columns
    Debug.Print col.Column
Next col
Run Code Online (Sandbox Code Playgroud)

循环遍历范围内的行

下面的代码显示了如何遍历范围 B2:C4 中的行。应用于右侧工作表中的数据,这将返回 2、3、4。由此我们看到行是从工作表的起点开始计算的。

Dim rng As Range: Set rng = Application.Range("B2:C4")
Dim col As Range
For Each col In rng.Rows
    Debug.Print col.Row
Next col
Run Code Online (Sandbox Code Playgroud)

循环遍历每 2 个区域示例的范围数据中的区域

通常我们假设一个范围具有矩形形状,但事实并非如此。右侧的示例工作表显示了一个包含两个区域的选择:Selection.Address 返回 $B$2:$C$3,$F$2:$F$3。这种情况也可能由 Intersect 方法或其他原因导致。要分别处理这两个范围,可以从 Areas 集合中选择:

Dim rng As Range: Set rng = Application.Selection
Dim rngArea As Range
For Each rngArea In rng.Areas
    Debug.Print rngArea.Address
Next rngArea
Run Code Online (Sandbox Code Playgroud)