循环通过具有相同值且具有一定范围的A 列的实际工作,该范围必须使用B 列中的评论检查最新日期,并在C列中打印带有日期的评论,请帮助我找到解决方案问题..或指南以找到解决此问题的方法...请检查屏幕截图以获取清晰的信息..在此先感谢专家
2 回答
循环可能是所有计算机编程主题中最强大的东西。请参阅以下示例,了解有关如何实现目标的一些想法。
对于每个示例的范围数据中的每个单元格
在 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
循环遍历每个示例的行数据中的单元格
下面的代码显示了如何循环使用 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
循环遍历列中的单元格
下面的代码显示了如何循环使用 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
循环遍历范围中的列
下面的代码显示了如何遍历 Range 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
循环遍历范围内的行
下面的代码显示了如何遍历 Range 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
循环遍历每个 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
我建议以一种相当简单的方法声明一些维度(假设您已对 A 列进行了排序):
Dim i As Long, j As Long, k As Long, LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LR
If Cells(i, 1).Value = Cells(i - 1).Value Then
If j = 0 Then
j = Cells(i - 1, 1).Row
End If
Else
If j > 0 Then
k = Cells(i - 1, 1).Row
Cells(j, 3).Value = Application.Max(Range(Cells(j, 1), Cells(k, 1)))
j = Cells(i, 1).Row
k = 0
End If
End If
Next i