2016-07-28 2 views
0

Предположим, у меня есть переменные yes_n и yes_d. D для знаменателя и n для числителя. У меня есть книга A, плоский файл и рабочая тетрадь B, справочный файл. Я пытаюсь вытащить столбцы из двух разных книг, а затем, если слова в ячейке в книге A, лист A, столбец A = слова в ячейке в книге B, листе, столбце B и слова в столбце слева ячейки B - да, затем добавьте одну к моей переменной yes_d. Затем, если слова в ячейке D книги A являются «некоторым значением», то также добавьте 1 в числитель. Как мне сказать что-то вроде «Если cellA (workbookA.SheetA.columnA) = cellB (workbookB.SheetB.columnB) И смещение B =« да », то yes_d + 1. Если cellDworkbookA.SheetA.columnD) =« некоторое значение "затем yes_n + 1., используя столбцы из двух разных книг, чтобы сделать оператор if в VBA excel

For M = 2 To 1000 
    For R = 2 To 60 

     If Workbooks("\flatfile.xlsb").Worksheets("ifyesorno").Range("A" & M) = _ 
      Workbooks("\referencefile.xlsm").Worksheets("reference1").Range("B" & R)_ 
      And Workbooks("\referencefile.xlsm").Worksheets("reference1").Range("A"_ 
      & R).Value = "yes" Then 

      yes_d = yes_d + 1 

      If Workbooks("\flatfile.xlsb").Worksheets("ifyesorno").Range("D" & M) = "some value" Then 

       yes_n = yes_n + 1 

      End If 
     End If 

    Next 
Next 
+0

Должно ли yes_n увеличиваться ТОЛЬКО ЕСЛИ yes_d увеличивается? например если значение в столбце A ifyesorno = значение в столбце B ссылочного1, но столбец A ссылочного1 является «нет», должен ли yes_n по-прежнему увеличиваться, если столбец D ifyesorno = «некоторое значение»? – YowE3K

+0

столбец A ссылки1 будет произвольным значением, не обязательно да или нет. Я должен был объяснить это лучше, поэтому yes_d всегда увеличивается, если первый оператор if является истинным, и только если оба оператора if есть true И первый оператор if равен true. Yes_n get incremented – durba138

+0

Где ваш код в настоящее время не работает? Это как вы ссылаетесь на «Рабочие книги (« \ flatfile.xlsb »)»? (Я думаю, что это должно быть просто «Workbooks» («flatfile.xlsb»), то есть избавиться от «\».) – YowE3K

ответ

1

логика коды уже не соответствуют указанным критериям. вы были неправильно ссылками на открытые книгах. Если рабочие книги не являются открытыми, то вы будете иметь, чтобы открыть их. необходимо пространство . между кодом и продолжение строки _

Неправильно: .Range("B" & R)_

Правильный .Range("B" & R) _

Создание переменных для сокращения ссылок значительно улучшит читаемость вашего кода.

Dim wsFlat As Worksheet, wsReference As Worksheet 
Set wsFlat = Workbooks("flatfile.xlsb").Worksheets("ifyesorno") 
Set wsReference = Workbooks("referencefile.xlsm").Worksheets("reference1") 

For M = 2 To 1000 
    For R = 2 To 60 

     If wsFlat.Range("A" & M) = wsReference.Range("B" & R) And wsReference.Range("A" & R).Value = "yes" Then 

      yes_d = yes_d + 1 

      If wsFlat.Range("D" & M) = "some value" Then 
       yes_n = yes_n + 1 
      End If 
     End If 

    Next 
Next 
+0

Вы не соответствуете моей скорости ниндзя !!! –

Смежные вопросы