Сравнение различий в значениях и возвращение ДА или НЕТ - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь сделать две вещи, выяснить, если Value1> = 3 И Value2 - Value1> = 5. Если это правда, то я бы хотел, чтобы YES появлялся в определенной ячейке в той же строке, что и Value2.,У меня уже было это, но я случайно переписал код, теперь я искал решения и пытался исправить это в течение нескольких часов, но я не могу найти то, что я делал, когда он работал.Пожалуйста, помогите!

Лист1:

enter image description here

Имя = Случайное имя Значение1 = 6

Лист2:

enter image description here

Name = RandomName Value2 = 20

Sub Ifgreaterthan()
Dim vFind
Dim lLoop As Long
Dim rFound As Range
Dim Sheet1 As Range
Dim REF As Variant
Dim NEW1 As Variant
Dim REFDELNEW1 As Integer
Dim x As String
Dim y As String

'Определить активную ячейку - это поиск уникального идентификатора, который одинаков для Value1 иValue2

vFind = ActiveCell
On Error Resume Next

'Это ищет уникальный идентификатор на другом листе

With Sheet1         
   Set rFound = .UsedRange.Find(What:=vFind, After:=.Cells(1, 1), 
    LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, 
    SearchDirection:=xlNext, MatchCase:=False)

' Это значения, основанные на уникальном идентификаторе

REF = WorksheetFunction.VLookup("rFound", "Sheet1!A:B", 2, 0)
NEW1 = WorksheetFunction.VLookup("vFind", "Sheet2!A:B", 2, 0)
REFDELNEW1 = NEW1 - REF

«Переменные да и нет

x = "Yes"
y = "No"

» Основные вычисления

If REF >= 3 & REFDELNEW1 >= 5 Then
  Worksheets("Sheet2").ActiveCell.Offset(, 3).Value = x                 
  Else: Worksheets("Sheet2").ActiveCell.Offset(, 3).Value = y
  End If
  End With
End Sub

Однажды я получил «Нет», как и предполагалось, но мне удалось потерять код.Я уверен, что ответ был там, поскольку я использую журнал изменений трека VBA в Excel, так что я уверен, что в какой-то момент он сделал то, что должен был сделать.Я потратил часы, пытаясь воссоздать ситуацию, и я не уверен, где искать и что делать в этот момент.Я надеялся, что профессионал сможет найти решение немедленно.В то же время я сам буду работать над кодом.

1 Ответ

0 голосов
/ 21 февраля 2019

Итак, я нашел гораздо более простое решение моей проблемы.Обратите внимание, что то, что ActiveCell вы используете, важно.

Вот решение текущего вопроса:

 Sub Greaterthan()

    Dim REF As Integer

    Dim DEF As Integer


     On Error Resume Next

     REF = ActiveCell.Offset(, 3).Value

      DEF = Application.Index(Sheets("Sheet1").Range("A1:A100"), 
              Application.Match(Sheets("Sheet2").Range(ActiveCell.Address), 
              Sheets("Sheet1").Range("B5:B1000"), 0))

       Number = 3

      x = "Yes"

      y = "No"


           If (REF - DEF) > Number Then

            ActiveCell.Offset(, 3).Value = x

           Else

           ActiveCell.Offset(, 3).Value = y

       End If


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