【问题标题】:Compare cells value in sheet1 and sheet2 then output entire row of the cells with same value in sheet3比较 sheet1 和 sheet2 中的单元格值,然后在 sheet3 中输出具有相同值的单元格的整行
【发布时间】:2023-04-05 23:30:01
【问题描述】:

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

表 1:

columnA | columnB |    columnC

C2S3    |   L9     |    number 229 available

C2S14   |   LBS    |    number 221229 available

C2S17   |   LQP    |    number 222726 available


C3S90   |   LQSH2  |    number 222729182 available

C3S91   |   LQSH2  |    number 222729190 available

C3S9    |   PLR    |    number 262228 available

C3S10   |   RFFH   |    number 28161618 available

C3S11   |   BWT1s  |    number 123330129 available

表2:

columnA |

C2S3

C2S14

C2S17

C3S1

C3S5

C3S9

C3S10

C3S11

C3S12

C3S14

C3S15

sheet3 输出:

C2S3    |   L9    |    number 229 available

C2S14   |   LBS   |    number 221229 available

C2S17   |   LQP   |    number 222726 available



C3S9    |   PLR   |    number 262228 available

C3S10   |   RFFH  |    number 28161618 available

C3S11   |   BWT1s |    number 123330129 available

这是我的代码:

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

【问题讨论】:

    标签: vba excel


    【解决方案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
    

    【讨论】:

    • 您好,您建议将 sheet3 更改为 sheet1 中 oldRow 的值。我只是错过了逻辑。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多