我没有找到适合这个问题的答案,而且我对VBA很新,所以我希望有人会帮助我。
我正在尝试在我的宏中创建一个Sub,它在两列之间逐行进行简单的值比较。如果它们完全匹配,则会在第三列填充“是”,否则将显示“否”
所有列都在excel表中并且具有相同的行数,结果应该是这样的示例(没有足够的代表来发布图像):
我在想像For Each声明,但我不确定如何以正确的方式创建它。提前感谢您的帮助!
答案 0 :(得分:0)
快速子程序循环遍历第1行到第20行并比较结果:
for i = 1 to 20
If sheet1.range("A" & i).value = sheet1.Range("B" & i).value Then
sheet1.Range("C" & i).value = "No"
Else
sheet1.Range("C" & i).value = "Yes"
End if
Next i
因为这似乎更像是一个学习实验,你也可以通过以下方式引用细胞:
for i = 1 to 20
If sheet1.cells(i,1).value = sheet1.cells(i,2).value Then
sheet1.cells(i,3).value = "No"
Else
sheet1.cells(i,3).value = "Yes"
End if
Next i
你提的范围会有所不同。您可以获取填充的最后一行,然后从1循环到:
Dim endRow as long
endRow = Sheet1.Range("A999999").End(xlUp).Row
for i = 1 to endRow
If sheet1.range("A" & i).value = sheet1.Range("B" & i).value Then
sheet1.Range("C" & i).value = "No"
Else
sheet1.Range("C" & i).value = "Yes"
End if
Next i
答案 1 :(得分:0)
当插入新行时,表将自动将公式带到新行。例如,假设您有下表,其中Same?
列包含公式=IF(C3=D3, "Yes", "No")
当您在表格中输入新行时,Same?
列中的公式将自动转到新行。例如,一旦我点击Tab
创建新行,这就是该单元格的样子:
现在说你想用一组新的数据完全重新填充表格。这没问题,只需复制新数据并将其粘贴到表中,如下所示:
复制强>
粘贴到第一个单元格
该表为您处理公式,有效地使宏不必要。
答案 2 :(得分:0)
谢谢大家的投入! 我从你的答案中提取了元素,并设法找到解决我问题的代码。如果您有任何问题,请告诉我
Sub Compare
On Error Resume Next
Dim Sm_Row As Long
Sm_Row = Range("Table1[Same?]").Row
For Each cl In Range("Table1[Same?]")
If Range("Table1[Col1]").Cells(Sm_Row, 1).Value = Range("Table1[Col2]").Cells(Sm_Row, 1).Value Then
cl.Value = "Yes"
Else
cl.Value = "No"
End If
Sm_Row = Sm_Row + 1
Next cl
End Sub