我还没找到适合这个问题的答案,我对VBA很陌生,所以我希望有人能帮助我。在Excel中创建一个比较两列的宏,第三列的答案
我想在我的宏中创建一个Sub,在两列之间进行简单的数值比较,逐行对比。如果它们完全匹配,则它将填充第三列“是”,否则将会说“否”
所有列都位于Excel表格中并具有相同数量的行,结果应为看起来像是这样(没有足够的代表处发布的图像):
我想这样一个For Each声明,但我不知道如何创建它的正确方法。提前感谢您的帮助!通过行1到20
我还没找到适合这个问题的答案,我对VBA很陌生,所以我希望有人能帮助我。在Excel中创建一个比较两列的宏,第三列的答案
我想在我的宏中创建一个Sub,在两列之间进行简单的数值比较,逐行对比。如果它们完全匹配,则它将填充第三列“是”,否则将会说“否”
所有列都位于Excel表格中并具有相同数量的行,结果应为看起来像是这样(没有足够的代表处发布的图像):
我想这样一个For Each声明,但我不知道如何创建它的正确方法。提前感谢您的帮助!通过行1到20
谢谢大家的意见! 我从你的答案中提取了元素,并设法提出了解决我的问题的代码。让我知道如果您有任何问题
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
快速子程序循环和比较结果:
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
这看起来很有希望!子程序是否可以写入,以便它所经历的行不是常量,而是取决于表的长度?即Range(“Table1 [Same?]”) – bcwhite1618 2014-10-10 15:05:58
刚刚添加,第二个前! :) – JNevill 2014-10-10 15:06:53
表插入新行时,会自动将公式带到新行。例如,假设你有如下表所在的Same?
列包含公式=IF(C3=D3, "Yes", "No")
正如你在表格中输入一个新行,在Same?
列的公式会被自动地带到新行。例如,这是细胞看起来就像有一次我打Tab
创建一个新的行:
现在说要与一个新的数据集在完全重新填充表。那没问题,只需复制新的数据,并将其粘贴在表像这样:
复制
粘贴到第一个单元格
的表格为您处理公式,有效地使宏成为不必要的。
为什么不使用第三列中的公式。这将会少得多。 '如果(A1 = B1,“否”,“是”)' – JNevill 2014-10-10 14:47:08
我会,除了在我的宏中的早些时候,我擦拭我的表并将其大小调整为1行,以便当新样本粘贴在该表中时,它会重新整理。从本质上讲,每当这件事发生时,它就会比较不同的范围,并需要适应这种差异。 – bcwhite1618 2014-10-10 15:02:54