Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/For Each .. Next Отнимаем первый лист от второго - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » For Each .. Next Отнимаем первый лист от второго (Макросы/Sub)
For Each .. Next Отнимаем первый лист от второго
Крутыш Дата: Среда, 08.10.2014, 16:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Нужно отнять первый лист в книге, который всегда будет стоять на первом месте в книге, тоесть привязываться к названию нельзя, от второго. Тоесть сегодняшний день от предыдущего и помещать по ячейкам на другой лист. Таблица полностью идентична на всех листах.

Я сделал, но у меня не получаеся, код считывается такое количество раз, сколько листов создано в книге, в том числе и итоговый лист.

Кроме этого, значения идут со знаком минус, и не могу понять почему?

Помогите пожалуйста
К сообщению приложен файл: 1318403.xlsm (21.3 Kb)


Сообщение отредактировал Крутыш - Среда, 08.10.2014, 16:28
 
Ответить
СообщениеНужно отнять первый лист в книге, который всегда будет стоять на первом месте в книге, тоесть привязываться к названию нельзя, от второго. Тоесть сегодняшний день от предыдущего и помещать по ячейкам на другой лист. Таблица полностью идентична на всех листах.

Я сделал, но у меня не получаеся, код считывается такое количество раз, сколько листов создано в книге, в том числе и итоговый лист.

Кроме этого, значения идут со знаком минус, и не могу понять почему?

Помогите пожалуйста

Автор - Крутыш
Дата добавления - 08.10.2014 в 16:28
0beorn Дата: Среда, 08.10.2014, 16:55 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: -5 ±
Замечаний: 0% ±

Excel 2010
конструкция 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

[/vba]

Автор - 0beorn
Дата добавления - 08.10.2014 в 16:55
Крутыш Дата: Среда, 08.10.2014, 17:04 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Спасибо
 
Ответить
СообщениеСпасибо

Автор - Крутыш
Дата добавления - 08.10.2014 в 17:04
KuklP Дата: Четверг, 09.10.2014, 00:02 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Странно выглядят заявления автора:
Нужно отнять первый лист в книге,... от второго. ...
значения идут со знаком минус, и не могу понять почему?
А с каким знаком должен быть результат вычитания 10-100? Может наоборот из первого второй вычитать? Тогда будут с плюсом. СтОит подучить арифметику yes Можно без циклов.
[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
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеСтранно выглядят заявления автора:
Нужно отнять первый лист в книге,... от второго. ...
значения идут со знаком минус, и не могу понять почему?
А с каким знаком должен быть результат вычитания 10-100? Может наоборот из первого второй вычитать? Тогда будут с плюсом. СтОит подучить арифметику yes Можно без циклов.
[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
[/vba]

Автор - KuklP
Дата добавления - 09.10.2014 в 00:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » For Each .. Next Отнимаем первый лист от второго (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!