Страницы: 1
RSS
VBA. Разность двух массивов
 
Здравствуйте. Подскажите как найти разность двух массивов. На листе1 таблица с числовыми значениями, на листе 2 такая же таблица но с другими значениями. нужно вычислить разность каждой ячейки этой таблицы и записать на лист3.
 
=Лист1!A2-Лист2!A2
 
Не так к сожалению не пойдёт нужно это сделать при помощи vba
я пробовал делать так:
Dim a() As Variant, b() As Variant
a = Лист1.Range("A1:C5")
b = Лист2.Range("A1:C5")
m= b+a 'и вот тут косяк переменные типа вариант я так понял вычитать нельзя.
Есть ли возможность решить данную задачу.
Изменено: ДенExcel111 - 16.04.2019 18:15:53
 
Расширение .xlsx, о макросах - ни слова. Как можно понять?
Код
Sub jjj()
Dim i As Long, j As Long
    For i = 2 To 5
        For j = 1 To 4
            Sheets("Лист3").Cells(i, j).Value = Sheets("Лист1").Cells(i, j).Value - Sheets("Лист2").Cells(i, j).Value
        Next j
    Next i
End Sub
Массивами
Код
Sub jjj()
Dim a(), b(), c()
Dim i As Long, j As Long
    a = Лист1.Range("A2:D5").Value
    b = Лист2.Range("A2:D5").Value
    ReDim c(1 To 4, 1 To 4)
    
    For i = 1 To 4
        For j = 1 To 4
            c(i, j) = a(i, j) - b(i, j)
        Next j
    Next i
    
    Лист3.Range("A2:D5").Value = c
End Sub

Упрощенно, т.к. нет определения размеров диапазонов, размера выгрузки
Лист1 - это внутреннее имя. В примере совпадение с видимым именем, но обычно не совпадает.
Видимое имя - Sheets("Лист1")
 
Ну тут вроде через запись макроса можно неплохой результат получить  :sceptic:
Код
Worksheets("Лист3").Range("A2:D5").FormulaArray = "=Лист1!RC:R[3]C[3]-Лист2!RC:R[3]C[3]"
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
 
Vikttur
Спасибо вам огромное. Всё работает.

как пометить тему как решённую?
 
Цитата
ДенExcel111 написал: как пометить тему как решённую?
Так.
Цитата
ДенExcel111 написал: Спасибо вам огромное. Всё работает.
 
отнять от значений таблицы 2 значения таблицы 1?
(извините, без VBA)
1. копируете таблицу 2 на лист3
2. копируете таблицу1
3. открываете лист3, курсор в первую ячейку скопированных данных, правая кнопка мыши, специальная вставка, в разделе операции отмечаете Вычесть, Ок. готово.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх