2014-10-10 48 views
0

我还没找到适合这个问题的答案,我对VBA很陌生,所以我希望有人能帮助我。在Excel中创建一个比较两列的宏,第三列的答案

我想在我的宏中创建一个Sub,在两列之间进行简单的数值比较,逐行对比。如果它们完全匹配,则它将填充第三列“是”,否则将会说“否”

所有列都位于Excel表格中并具有相同数量的行,结果应为看起来像是这样(没有足够的代表处发布的图像):

enter image description here

我想这样一个For Each声明,但我不知道如何创建它的正确方法。提前感谢您的帮助!通过行1到20

+0

为什么不使用第三列中的公式。这将会少得多。 '如果(A1 = B1,“否”,“是”)' – JNevill 2014-10-10 14:47:08

+0

我会,除了在我的宏中的早些时候,我擦拭我的表并将其大小调整为1行,以便当新样本粘贴在该表中时,它会重新整理。从本质上讲,每当这件事发生时,它就会比较不同的范围,并需要适应这种差异。 – bcwhite1618 2014-10-10 15:02:54

回答

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 
0

快速子程序循环和比较结果:

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 
+0

这看起来很有希望!子程序是否可以写入,以便它所经历的行不是常量,而是取决于表的长度?即Range(“Table1 [Same?]”) – bcwhite1618 2014-10-10 15:05:58

+0

刚刚添加,第二个前! :) – JNevill 2014-10-10 15:06:53

0

表插入新行时,会自动将公式带到新行。例如,假设你有如下表所在的Same?列包含公式=IF(C3=D3, "Yes", "No")

enter image description here

正如你在表格中输入一个新行,在Same?列的公式会被自动地带到新行。例如,这是细胞看起来就像有一次我打Tab创建一个新的行:

enter image description here

现在说要与一个新的数据集在完全重新填充表。那没问题,只需复制新的数据,并将其粘贴在表像这样:

复制

enter image description here

粘贴到第一个单元格

enter image description here

的表格为您处理公式,有效地使宏成为不必要的。

相关问题