Страницы: 1
RSS
Как вычесть из одной таблицы другую с условием
 
Доброго времени, Уважаемые форумчане. Прошу помощи в корректировке макроса, он вычитает из одной таблицы другую, но если в одной из таблицы не число, то ошибка., а надо чтобы он в эту же ячейку возвращал либо данные, если мы вычитаем из текста число то вычитаемое, если из числа текст, то уменьшаемое. Заранее благодарен
Код
Sub iSubtract()
Dim Arr1
Dim Arr2
Dim i As Integer
Dim j As Integer
  Arr1 = Range("A2:B10").Value
  With Worksheets("Лист2")
    Arr2 = .Range("A2:B10").Value
    For i = 1 To UBound(Arr1)
      For j = 1 To UBound(Arr1, 2)
        Arr1(i, j) = Arr1(i, j) - Arr2(i, j)
      Next
    Next
    [A2].Resize(UBound(Arr1), UBound(Arr1, 2)) = Arr1
  End With
End Sub
 
alex1210, нельзя вычесть из таблицы другую!!!
Код
Arr1(i, j) = IIf(IsNumeric(Arr1(i, j)), Arr1(i, j), 0) + IIf(IsNumeric(Arr2(i, j)), -Arr2(i, j), 0)
По вопросам из тем форума, личку не читаю.
 
БМВ, здравствуйте спасибо за помощь. Макрос посчитал, но получились значения со знаком "-", как сделать чтоб его не было?
 
alex1210, что вы подразумеваете что бы его не было? если там такое значение....или вам нужен модуль?
если да оберните в получаемый результат в ABS()
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,здравствуйте вот эту строку?
Код
ABC(IIf(IsNumeric(Arr1(i, j)), Arr1(i, j), 0) + IIf(IsNumeric(Arr2(i, j)), -Arr2(i, j), 0))

 
alex1210, ну оберните посмотрите результат.. строку которую предложил вам
Цитата
БМВ написал:
Arr1(i, j) = IIf(IsNumeric(Arr1(i, j)), Arr1(i, j), 0) + IIf(IsNumeric(Arr2(i, j)), -Arr2(i, j), 0)
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, выводит ошибку почему то ошибку, что не так с кодом
Код
Sub iSubtract()
Dim Arr1
Dim Arr2
Dim i As Integer
Dim j As Integer
  Arr1 = Range("A2:B9").Value
  With Worksheets("Лист2")
    Arr2 = .Range("A2:B9").Value
    For i = 1 To UBound(Arr1)
      For j = 1 To UBound(Arr1, 2)
       Arr1(i, j) = IIf(IsNumeric(Arr1(i, j)), Arr1(i, j), 0) + IIf(IsNumeric(Arr2(i, j)), -Arr2(i, j), 0)
      Next
    Next
    [A2].Resize(UBound(Arr1), UBound(Arr1, 2)) = Arr1
  End With
End Sub
Страницы: 1
Наверх