如何显示特定单元格中的数据?

时间:2019-10-23 06:06:15

标签: excel vba

嗨,我想在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”的输出数据“正确”,但是我希望它仅在特定单元格上显示。请帮助

2 个答案:

答案 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,这显然是不正确的原因, 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","")

并将其一直向下拖动。