我有一个如下所示的表格(B1:L7) 其中 A1 是查找值,B 列是标题,C 到 L 列是数据
这是我打算对宏执行的操作:
- 使用 A1 中的查找值循环 B 列
- 一旦匹配,在下面的示例中,B6 显示与 A1 匹配的值,前 10 个值(C 到 L)(即:第 6 行)的值将循环显示值
我已经按照如下方式安装了一些宏,它在步骤 1 中可以正常工作
Sub Looping_Click()
'Search columns
Dim c As Range
'Search rows
Dim r As Range
Dim i As Integer
For Each r In Range("B:B")
If r.Value = Range("A1").Value Then
MsgBox "Found values at " & r.Address
For Each c In r.Columns
i = 1
Do While i <= 10
MsgBox "Values is " & c.Value
i = i + 1
Loop
Next c
End If
Next r
End Sub
但到达步骤 2 后,它以某种方式重复显示 B6 值 10 次,而不是显示 C A C T C A A T C C
最佳答案
这是您任务的解决方案:
Sub Looping_Click()
'Search columns
Dim c As Range
'Search rows
Dim r As Range
For Each r In Range(Range("B1"), Range("B1").End(xlDown))
If r.Value = Range("A1").Value Then
MsgBox "Found values at " & r.Address
For Each c In Range(r.Offset(0, 1), r.Offset(0, 10))
MsgBox "Values is " & c.Value
Next c
End If
Next r
End Sub
与您的版本相比,我主要更改了以下内容:
- 将
For Each r In Range("B:B")
更改为For Each r In Range(Range("B1"), Range("B1").End(xlDown) ))
。像这样,循环不会对B
列的所有行执行。 - 将
For Each c In r.Columns
更改为For Each c In Range(r.Offset(0, 1), r.Offset(0, 10))
。这是产生意想不到的结果的关键。之前,您对找到的单元格循环十次。由于偏移
,它将在所需的范围内循环。
关于excel - 如何在 Excel 中循环行然后循环列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66025736/