我正在尝试将单元格A1与B1进行比较,如果为真,则使用A1值填充单元格F1。但无论我的输入值如何,if条件都成立。
Sub Macro3()
Dim i As Integer
i = 1
For i = 1 To 10
If (Range("A" & i).Select = Range("B" & i).Select) Then
Range("A" & i).Select
Selection.Copy
Range("F" & i).Select
ActiveSheet.Paste
End If
Next i
End Sub
答案 0 :(得分:3)
您可以比较单元格的Value属性,然后相应地设置F列值,而不是选择,复制和粘贴:
Dim i As Integer
For i = 1 To 10
If Range("A" & i).Value = Range("B" & i).Value Then
Range("F" & i).Value = Range("A" & i).Value
End If
Next
答案 1 :(得分:0)
认为这是对尼克答案的赞美(接受他,如果你发现它可以工作,你应该这样做)。我想帮助解释代码中的一些错误。
在FIX之前:
Sub Macro3()
Dim i As Integer
i = 1
For i = 1 To 10
If (Range("A" & i).Select = Range("B" & i).Select) Then
Range("A" & i).Select
Selection.Copy
Range("F" & i).Select
ActiveSheet.Paste
End If
Next i
End Sub
AFIX FIX
Sub Macro4()
Dim i As Long
For i = 1 To 10
If Range("A" & i).Value = Range("B" & i).Value Then
Range("F" & i).Value = Range("A" & i).Value
End If
Next
End Sub
的点数:强> 的
我希望这会有所帮助。顺便说一下,你可以简单输入:
=IF(A1=B1,A1,"")
在F1中并向下拖动公式以获得类似的结果。
答案 2 :(得分:0)
您可以使用变体数组来解决上面提到的性能问题。此代码将与Nicks运行相同,但它将跳过空白单元格,即它将
我不清楚你如何比较两张纸上的行,你可以对此进行扩展吗?
Sub MyArray()
Dim X As Variant
Dim Y As Variant
Dim lngrow As Long
X = Range([a1], Cells(Rows.Count, "B").End(xlUp))
Y = Range([f1], [f1].Offset(UBound(X, 1) - 1, 0))
For lngrow = 1 To UBound(X, 1)
If Len(X(lngrow, 1)) > 0 Then
If X(lngrow, 1) = X(lngrow, 2) Then Y(lngrow, 1) = X(lngrow, 1)
End If
Next
Range([f1], [f1].Offset(UBound(X, 1) - 1, 0)) = Y
End Sub