Нужно отнять первый лист в книге, который всегда будет стоять на первом месте в книге, тоесть привязываться к названию нельзя, от второго. Тоесть сегодняшний день от предыдущего и помещать по ячейкам на другой лист. Таблица полностью идентична на всех листах.
Я сделал, но у меня не получаеся, код считывается такое количество раз, сколько листов создано в книге, в том числе и итоговый лист.
Кроме этого, значения идут со знаком минус, и не могу понять почему?
Помогите пожалуйста
Нужно отнять первый лист в книге, который всегда будет стоять на первом месте в книге, тоесть привязываться к названию нельзя, от второго. Тоесть сегодняшний день от предыдущего и помещать по ячейкам на другой лист. Таблица полностью идентична на всех листах.
Я сделал, но у меня не получаеся, код считывается такое количество раз, сколько листов создано в книге, в том числе и итоговый лист.
Кроме этого, значения идут со знаком минус, и не могу понять почему?
конструкция for each тут не нужна. Если нужно просто получать результат вычитания из второго слева листа первый - то достаточно поправить так как указано ниже: [vba]
Код
Dim RNGpaste As Range 'диапазон итоговой таблицы Dim celpaste As Range Dim WSdata As Worksheet Dim wspaste As Worksheet Dim i As Integer Dim znak As Double znak = 1 Set wspaste = Sheets("итог") wspaste.Activate
With wspaste Set RNGpaste = .Cells(3, 2).Resize(5, 1) RNGpaste.Select RNGpaste.Clear End With
' For Each WSdata In Sheets
For i = 1 To 2 Set WSdata = Sheets(i) If i = 2 Then znak = -1 For Each celpaste In RNGpaste With WSdata celpaste = celpaste - .Range(celpaste.Address) * znak End With Next celpaste Next i ' Next WSdata
[/vba]
конструкция for each тут не нужна. Если нужно просто получать результат вычитания из второго слева листа первый - то достаточно поправить так как указано ниже: [vba]
Код
Dim RNGpaste As Range 'диапазон итоговой таблицы Dim celpaste As Range Dim WSdata As Worksheet Dim wspaste As Worksheet Dim i As Integer Dim znak As Double znak = 1 Set wspaste = Sheets("итог") wspaste.Activate
With wspaste Set RNGpaste = .Cells(3, 2).Resize(5, 1) RNGpaste.Select RNGpaste.Clear End With
' For Each WSdata In Sheets
For i = 1 To 2 Set WSdata = Sheets(i) If i = 2 Then znak = -1 For Each celpaste In RNGpaste With WSdata celpaste = celpaste - .Range(celpaste.Address) * znak End With Next celpaste Next i ' Next WSdata
Нужно отнять первый лист в книге,... от второго. ... значения идут со знаком минус, и не могу понять почему?
А с каким знаком должен быть результат вычитания 10-100? Может наоборот из первого второй вычитать? Тогда будут с плюсом. СтОит подучить арифметику Можно без циклов. [vba]
Код
Sub www() Sheets("итог").Select With Sheets(1) Range(.[B3], .[B3].End(xlDown)).Copy Sheets("итог").[B3] End With With Sheets(2) .Range(.[B3], .[B3].End(xlDown)).Copy Sheets("итог").[B3].PasteSpecial xlPasteValues, 3 End With End Sub
Нужно отнять первый лист в книге,... от второго. ... значения идут со знаком минус, и не могу понять почему?
А с каким знаком должен быть результат вычитания 10-100? Может наоборот из первого второй вычитать? Тогда будут с плюсом. СтОит подучить арифметику Можно без циклов. [vba]
Код
Sub www() Sheets("итог").Select With Sheets(1) Range(.[B3], .[B3].End(xlDown)).Copy Sheets("итог").[B3] End With With Sheets(2) .Range(.[B3], .[B3].End(xlDown)).Copy Sheets("итог").[B3].PasteSpecial xlPasteValues, 3 End With End Sub