Указание адресов ячеек в аргументах формулы Excel с использованием VBA - PullRequest
1 голос
/ 01 августа 2011

У меня есть столбец A и столбец B, они сравнивают свои предыдущие значения и сравнивают их со следующими формулами

    =IF((OR(AND(A2=A1,B2=B1),K2=0),0,1) it puts the 0 or 1 on the coresponding Q column

поэтому, когда он идет к 5-й ячейке, он становится

    =IF((OR(AND(A5=A4,B5=B4),K5=0),0,1)

Но я пытаюсь применить его в своем коде VBA, как эти

  For numm = 2 To lastRow
  Sheet1.Cells(numm, "Q").Value = ="IF(OR(AND(sheet1.cells(numm,""A"").value=sheet1.cells(numm-1,""A"")simlar way becolumn),sheet1.cells(numm,""k"").value=0),1,0)"
  Next numm

Но я не могу выполнить действие, которое говорит 1004 ошибка и ошибка объекта Как я могу использовать ячейки (numm, "A") в моих формулах VBA или, по крайней мере, любой другой способ поместить мою формулу и заставить ее работать

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Ссылка на номер цикла в вашей формуле должна быть вне строки.

Может быть, вы можете установить в VBA саму формулу ячейки ...

For numm = 2 To lastRow

    Sheet1.Cells("Q" & numm).Formula = _
         "=IF((OR(AND(A" & numm & "=A" & numm - 1 & ",B" & numm & _
         "=B" & numm - 1 & "),K" & numm & "=0),0,1)"

Next numm

Лично я бы сделал весь оператор в VBA (ifs, ors, ands) и просто перенес бы значение обратно в Excel. Использование формул Excel затрудняет чтение кода.

0 голосов
/ 01 августа 2011

Вы ищете что-то вроде:

Public Sub test()
    Dim Sheet1 As Excel.Worksheet
    Set Sheet1 = ActiveSheet
    Dim numm As Integer, lastrow As Integer
    lastrow = 5

    For numm = 2 To lastrow
        Sheet1.Cells(numm, "Q").Value = "=IF(OR(AND(" & Sheet1.Cells(numm, "A").Address & "=" & Sheet1.Cells(numm - 1, "A").Address & "," & Sheet1.Cells(numm, "B").Address & "=" & Sheet1.Cells(numm - 1, "B").Address & ")," & Sheet1.Cells(numm, "k").Address & "=0),1,0)"
    Next numm

End Sub

На Sheet1 нельзя ссылаться внутри значения ячейки, он существует только в создаваемой вами функции vba, поэтому вместо этого вы можете добавлять строки вместе и просто получать адреса ячеек, соответствующие типу функция, которую вы создавали ранее.

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