Данные VBA на листе 1 соответствуют любой ячейке в столбце A листа 2 - PullRequest
0 голосов
/ 22 января 2019

У меня есть два листа Report и Stat. Мне нужно сопоставить ячейку из отчета с Stat и Stat с отчетом.

Я не знаю, что мне не хватает :(

Я пытаюсь выполнить цикл с For, If, IF Not

Sub Test1()
    Dim x As Integer
    Application.ScreenUpdating = False

    Rows = Range("A1", Range("A1").End(xlDown)).Rows.Count
    Range("A2").Select

    For x = 1 To Rows        
        If ActiveCell.Value = Stat.Range("A").Value Then ActiveCell.Offset(0, 11).Value = "Old"
        If Not ActiveCell.Value = Stat.Range("A").Value Then ActiveCell.Offset(0, 11).Value = "New"
        ' Selects cell down 1 row from active cell.
        ActiveCell.Offset(1, 0).Select
    Next

    Sheets("Stat").Select

    Rows2 = Range("A1", Range("A1").End(xlDown)).Rows.Count
    Range("A2").Select

    For x = 1 To Rows2
        If Not ActiveCell.Value = Report.Range("A").Value Then ActiveCell.Offset(0, 11).Value = "Cleared"
        ' Selects cell down 1 row from active cell.
        ActiveCell.Offset(1, 0).Select
    Next

    Application.ScreenUpdating = True
End Sub

Мне нужно сопоставить все ячейки в столбце A и попытаться сопоставить его с любой ячейкой в ​​столбце A на странице статистики.

Если он совпадает, то смещение листа отчета на 11 ячеек вправо и добавление значения «Старый» в ячейку. Если он не совпадает, то смещение Off на 11 ячеек в отчете справа и добавьте значение «New».

Последнее, что мне нужно, чтобы сопоставить все ячейки в столбце A с листа статистики и попытаться сопоставить его с любой ячейкой в ​​столбце A на листе отчета.

Если оно совпадает, то ничего Если он не совпадает, тогда сместите Stat со смещением 11 вправо и добавьте значение «Cleared»

Я все еще работаю над этим, но не могу понять: /

Ответы [ 2 ]

0 голосов
/ 22 января 2019

ОШИБКА 4001

Я следую вашему совету, но на этот раз я не могу перекрывать слова "Старый", "Новый" и "Очистить" в одной ячейке :(

    Option Explicit

Sub Loop_Loop()

    Dim LastrowReport As Long, LastrowStat As Long, i As Long, y As Long
    Dim ValueReport As String, ValueStat As String


    LastrowReport = Sheet10.Cells(Sheet10.Rows.Count, "A").End(xlUp).Row

    LastrowStat = Sheet12.Cells(Sheet12.Rows.Count, "A").End(xlUp).Row


    For i = 2 To LastrowReport

        ValueReport = Sheet10.Range("A" & i).Value

        For y = 2 To LastrowStat

            ValueStat = Sheet12.Range("A" & y).Value

            If ValueReport = ValueStat Then
                Activecell.offset(0, 11).Value = "Old"
            If Not ValueReport = ValueStat Then
                Activecell.offset(0, 11).Value = "New"
            If Not ValueStat = ValueReport Then
                Activecell.offset(0, 11).Value = "Clear"
            End If

        Next y
    Next i

End Sub
0 голосов
/ 22 января 2019

Это может помочь вам:

    Option Explicit

    Sub Loop_Loop()

        Dim LastrowReport As Long, LastrowStat As Long, i As Long, y As Long
        Dim ValueReport As String, ValueStat As String

        'Find Report sheet last row (Column A)
        LastrowReport = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row
        'Find Stat sheet last row (Column A)
        LastrowStat = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row

        'Loop value in sheet Report, column A (starting from second row)
        For i = 2 To LastrowReport
            'Value in sheet Report, Column A i row
            ValueReport = Sheet1.Range("A" & i).Value
            'Loop value in sheet Stat, column A (starting from second row)
            For y = 2 To LastrowStat
                'Value in sheet Stat, Column A y row
                ValueStat = Sheet2.Range("A" & y).Value
                'Check if ValueReport & ValueStat is equal
                If ValueReport = ValueStat Then
                    MsgBox "Same Values!"
                End If

            Next y
        Next i

    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...