嗨,我想在B列显示特定单元格的输出,但是我真的不知道如何显示它。示例:如果“ A2”具有记录,我希望“ B2”显示输出。如果“ A100”有记录,我希望“ B100”显示输出
Sub Testing()
Dim cell As Range
For Each cell In Range("A2:A4")
If cell.Value = "yes.com" Then
Range("B2:B4").Value = "Correct"
End If
Next
End Sub
上面的代码显示了从“ B2”到“ B4”的输出数据“正确”,但是我希望它仅在特定单元格上显示。请帮助
答案 0 :(得分:2)
当前,您正在遍历范围对象。每个单元格。一个小的数据集就可以了,但是在您当前的尝试中,您需要更改:
vendor
for Range("B2:B4").Value = "Correct"
根据我的评论,您可以更智能/更快地完成此操作。遍历工作表单元格的速度很慢,在大型数据集上肯定很慢(说实话,一千行并不是很多)。尽管如此,最好知道一个好的做法是遍历数组。让我向您展示以下内容:
cell.Offset(0,1).value = "Correct"
因此,您会看到一些对您有所帮助的事情:
Sub Testing()
Dim lr As Long, x As Long
Dim arr As Variant
With Sheet1 'Change accordingly
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
arr = .Range("A2:B" & lr)
For x = LBound(arr) To UBound(arr)
If arr(x, 1) = "yes.com" Then
arr(x, 2) = "correct"
End If
Next x
.Range("A2:B" & lr).Value = arr
End With
End Sub
来引用范围的父级。没有它,宏将仅引用CodeName
,这显然是不正确的原因,1> li>
ActiveSheet
变量将获得A列中最后使用的行,因此您不必再遍历完全合格的引用。lr
变量是一个数组,它将指定范围内的值存储到内存中。在内存中运行数据比在工作表单元格上循环/迭代要快得多。当您拥有更大的数据集时,这将变得更加明显。希望这对您有帮助=)
如前所述,一千行仍然没有那么多。尽管我建议您坚持使用arr
方法,但也可以Array
的A列并相应地填充B列,而不用单步执行范围对象。这是一个变相的数组公式,因此在实际的大型数据集上不是很快。
Evaluate
答案 1 :(得分:1)
只需尝试:
Sub test()
Dim i As Long
For i = 1 To Rows.Count
If Cells(i, 1) = "yes.com" Then Cells(i, 2) = "Correct"
Next
End Sub
它将遍历整个A
列。
或者,您可以输入B1公式:
=IF(A1="yes.com","Correct","")
并将其一直向下拖动。