比较sheet1和sheet2中的单元格值,然后在sheet3

时间:2017-04-28 01:59:20

标签: vba excel-vba excel

你能帮我解决一下我的担忧吗? 我有3张,sheet1,sheet2和sheet3。 我想比较sheet1和sheet2中的excel值或文本。 Sheet1包含从A列到C的值。但是,与Sheet 2列A比较的唯一值是Sheet A中A列中的值。一旦两个列(Sheet1中的A和sheet2中的A)被比较相同的值,输出将显示在sheet3中。将显示两列(A sheet1和sheet2)的相同值,包括B列和C列中的值。我的代码正在运行,但不能包含相同值的B列和C列中的值。谢谢你能给我的任何帮助。

sheet1:

columnA | columnB | columnC

C2S3 | L9 | 229号可用

C2S14 | LBS |号码221229

C2S17 | LQP |编号222726

C3S90 | LQSH2 |编号222729182

C3S91 | LQSH2 |编号222729190

C3S9 | PLR |号码262228

C3S10 | RFFH |编号28161618

C3S11 | BWT1s |编号123330129

表2:

columnA |

C2S3

C2S14

C2S17

C3S1

C3S5

C3S9

C3S10

C3S11

C3S12

C3S14

C3S15

sheet3输出:

C2S3 | L9 | 229号可用

C2S14 | LBS |号码221229

C2S17 | LQP |编号222726

C3S9 | PLR |号码262228

C3S10 | RFFH |编号28161618

C3S11 | BWT1s |编号123330129

继承我的代码:

Private Sub CommandButton1_Click()

Dim oldRow As Integer

Dim newRow As Integer

Dim i As Integer

i = 1 

For oldRow = 1 To 300

    For newRow = 1 To 300

        If StrComp((Worksheets("Sheet1").Cells(oldRow, 1).Text),
        (Worksheets("Sheet2").Cells(newRow, 1).Text), vbTextCompare) <> 0 
        Then

             i = oldRow

             Worksheets("Sheet3").Cells(i, 3) = "" 'clear the cells

        Else

            Worksheets("Sheet3").Rows(newRow).Value = 
            Worksheets("Sheet2").Rows(newRow).Value 

            i = i + 1

            Exit For

        End If

    Next newRow

Next oldRow

MsgBox "Done Compare", vbOKOnly

End Sub

1 个答案:

答案 0 :(得分:1)

试试这个,看它是否有效。我无法遵循代码中的一些逻辑。我认为我的建议应该将Sheet3中oldRow的A,B和C列设置为Sheet1中oldRow的值。

你有这些代码行。

        Worksheets("Sheet3").Rows(newRow).Value = 
        Worksheets("Sheet2").Rows(newRow).Value 

试试这个,看看它是否适合你。

    Worksheets("Sheet3").Cells(oldRow, 1).Value = Worksheets("Sheet1").Cells(oldRow, 1).Value
    Worksheets("Sheet3").Cells(oldRow, 1).Offset(0, 1).Value = Worksheets("Sheet1").Cells(oldRow, 1).Offset(0, 1).Value
    Worksheets("Sheet3").Cells(oldRow, 1).Offset(0, 2).Value = Worksheets("Sheet1").Cells(oldRow, 1).Offset(0, 2).Value