vba excel сравнить значения - PullRequest
0 голосов
/ 26 мая 2020

Интересно, может ли кто-нибудь помочь мне завершить код vba. Я хочу Сравнить два значения в двух разных столбцах ( Правильно , Сравнить ). Если они равны, вы должны скопировать значение из третьего столбца ( Rank ) в четвертый столбец ( Output ). «Группа Сравнить » составляет 39 строк «Группа Ранг » составляет 39 строк «Группа Правильно » составляет 13 строк «Группа Вывод"- 13 строк. Таким образом, первый l oop равен Сравнить (строки 2-40), Rank (строки 2-40), Правильно (2-14 ряды), Вывод (2-14 ряды). Второй l oop Сравните (ряд 41-79), Ряд (ряд 41-79), Правильно (ряд 15-27), Выведите (строки 15-27) и так далее. Этот код работает для первого l oop. После этого все идет не так.

Private Sub CommandButton3_Click()

Dim LastRow
Dim i

LastRow = Cells(Rows.Count, "F").End(xlUp).Row


For i = 2 To LastRow
    Cells(i, 7) = Application.WorksheetFunction.VLookup(Cells(i, 6), Columns("D:E"), 2, 0)
Next i

End Sub

Ниже приведен пример данных. enter image description here

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Если я правильно понимаю, вы хотите скопировать значения из Rank в Output, если Compare и Correct равны. Я думаю, что все, что вам нужно в этом случае, - это простой оператор IF:

For i = 2 to 26 'I am basing these numbers off the spreadsheet, but you could use 
                 variables here from earlier in your code.

If Cells(i, 4) = Cells(i, 6) Then   'Column 4 and 6 are Compare and Correct, 
                                     respectively.
  Cells(i, 7) = Cells(i, 5)         'Column 7 and 5 are Output and Rank respectively.

Next i
0 голосов
/ 26 мая 2020

Судя по добавленному вами изображению, не было бы проще просто использовать ВПР? Вы получите те же результаты, что и IFS, который вы использовали.

Попробуйте следующее:

Private Sub CommandButton2_Click()

LastRow = Cells(Rows.Count, "F").End(xlUp).Row

For i = 2 To LastRow
    Cells(i, 7) = Application.WorksheetFunction.VLookup(Cells(i, 6), Columns("D:E"), 2, 0)
Next i

End Sub

LastRow получает последнюю ячейку столбца «Правильно», поэтому мы знаем, сколько раз макрос должен будет go через l oop. Далее у нас есть For l oop, которое идет (в вашем примере) от 2 до 14. Внутри l oop есть функция ВПР, которая сравнивает значение из столбца Correct со столбцом * 1010. * Сравните , и если есть совпадение, возвращает значение столбца Ранг для 1-го совпадения.

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