Цикл VBA и возвращаемое значение, если выполнены два условия - PullRequest
0 голосов
/ 01 ноября 2019

Добро Дан,

У меня есть цикл For, который пытается проверить, соответствуют ли идентификатор и количество товара идентификатору и количеству товара в другом листе. Если эти критерии выполнены, то я хочу вернуть значение в одном столбце в ячейку, в которой выполнялся этот цикл.

Переменные: wsUS As Worksheet wsTHEM As Worksheet LastRowUS As Long

Предполагая, что переменные правильно определены и установлены, вот мое демо-код:

'Starts at 2nd row due to header
For i = 2 To LastRowUS
   'First If matches Item IDs
   If wsUS.Range("F" & i) = wsTHEM.Range("E" & i) Then
      'Second If sees if other worksheet returned "Match item quantities
      If wsTHEM.Range("Y" & i) = "Match" Then
         'Return the value if column X in wsTHEM to column Y in wsUS if ID and quantities matched
         wsUS.Range("Y" & i).Value = wsTHEM.Range("X" & i).Value
      Else
         'Return text
         wsUS.Range("Y" & i).Value = "Discrepancy"
      End If
   End If
Next i

На данный моментКажется, этот цикл работает для некоторых строк, но есть ли у кого-нибудь подсказки VBA с Index / Match или этот цикл, который может помочь мне вернуть значение в столбце X wsTHEM, если оба критерия для ID и количества удовлетворены?

Спасибо за помощь и счастливого Хэллоуина

1 Ответ

0 голосов
/ 01 ноября 2019

если вы придерживаетесь VBA, используйте AND вместо вложенного цикла следующим образом:

'Starts at 2nd row due to header
For i = 2 To LastRowUS
   'If matches Item IDs and other worksheet returned "Match item quantities
   If wsUS.Range("F" & i) = wsTHEM.Range("E" & i) And wsTHEM.Range("Y" & i) = "Match" Then
         'Return the value if column X in wsTHEM to column Y in wsUS if ID and quantities matched
         wsUS.Range("Y" & i).Value = wsTHEM.Range("X" & i).Value
      Else
         'Return text
         wsUS.Range("Y" & i).Value = "Discrepancy"
      End If
   End If
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...