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

Вход

Регистрация

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

 

= Мир MS Excel/Суммирование двух диапазонов песочница - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Суммирование двух диапазонов песочница (Макросы/Sub)
Суммирование двух диапазонов песочница
Railord Дата: Пятница, 10.10.2014, 22:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый вечер форумчане!

Просьба помочь, необходимо чтобы значения из одного диапазона прибавлялись к другому. Сделать надо с помощью макроса.
[vba]
Код


Sub ЗаносимДанные()

Dim oCell As Range
Dim oRng As Range
Dim SumR As Range
Dim SumB As Range

Set oRng = Range([C8], Cells(8, Columns.Count).End(xlToLeft))
Set oCell = oRng.Find([AA2], , , xlWhole)
Set SumR = Range(oCell.Offset(1, 0), oCell.Offset(70, 0))
Set SumB = Range([B9], [B78])

SumR = WorksheetFunction.Sum(SumR, SumB)
SumR.Value = SumR.Value+SumB.Value
End Sub
[/vba]
Блуждания по интернету и форуму привели к:
1) SumR.Value = SumR.Value+SumB.Value - этот вариант вообще не дал результат.
2) SumR = WorksheetFunction.Sum(SumR, SumB) - пробовал так, суммирует данные диапазонов не по ячейкам, а в кучу...

Наверняка надо с помощью цикла, но я не знаю как лучше...
К сообщению приложен файл: 3924888.xlsm (21.3 Kb)


Nil novi sub luna, так что - век живи, век учись!)
 
Ответить
СообщениеДобрый вечер форумчане!

Просьба помочь, необходимо чтобы значения из одного диапазона прибавлялись к другому. Сделать надо с помощью макроса.
[vba]
Код


Sub ЗаносимДанные()

Dim oCell As Range
Dim oRng As Range
Dim SumR As Range
Dim SumB As Range

Set oRng = Range([C8], Cells(8, Columns.Count).End(xlToLeft))
Set oCell = oRng.Find([AA2], , , xlWhole)
Set SumR = Range(oCell.Offset(1, 0), oCell.Offset(70, 0))
Set SumB = Range([B9], [B78])

SumR = WorksheetFunction.Sum(SumR, SumB)
SumR.Value = SumR.Value+SumB.Value
End Sub
[/vba]
Блуждания по интернету и форуму привели к:
1) SumR.Value = SumR.Value+SumB.Value - этот вариант вообще не дал результат.
2) SumR = WorksheetFunction.Sum(SumR, SumB) - пробовал так, суммирует данные диапазонов не по ячейкам, а в кучу...

Наверняка надо с помощью цикла, но я не знаю как лучше...

Автор - Railord
Дата добавления - 10.10.2014 в 22:55
EvgenyD Дата: Суббота, 11.10.2014, 00:35 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Railord, поясните на словах что и с чем Вы хотите в таблице сложить?
 
Ответить
СообщениеRailord, поясните на словах что и с чем Вы хотите в таблице сложить?

Автор - EvgenyD
Дата добавления - 11.10.2014 в 00:35
AndreTM Дата: Суббота, 11.10.2014, 01:27 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Там, наверное, надо сложить данные по дате с данными итога, причем прямо в итоге.
Зачем это делать макросами - непонятно, но раз так ТС желает...

Думаю, более правильным кодом был бы такой:
[vba]
Код
Set oRng = Range([C8], [e8].End(xlToRight))
Set oCell = Cells(8, [=MATCH(AA2,OFFSET(8:8,,),)])
Set SumR = oCell.Offset(1).Resize(70)
Set SumB = [b9].Resize(SumR.Rows.Count)

Dim c As Range
Set c = ActiveCell
SumR.Copy
SumB.PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
Application.CutCopyMode = False
c.Activate
[/vba]Это так, прямо на коленке :)
Если бы ТС объяснил, как именно поставлена задача - думаю, код был бы совершенно другим...

А, да, в коде же определенно не хватает:
[vba]
Код
If oCell Is Nothing Then MsgBox "Немає такої букви в цьому слові !": exit sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Суббота, 11.10.2014, 01:31
 
Ответить
СообщениеТам, наверное, надо сложить данные по дате с данными итога, причем прямо в итоге.
Зачем это делать макросами - непонятно, но раз так ТС желает...

Думаю, более правильным кодом был бы такой:
[vba]
Код
Set oRng = Range([C8], [e8].End(xlToRight))
Set oCell = Cells(8, [=MATCH(AA2,OFFSET(8:8,,),)])
Set SumR = oCell.Offset(1).Resize(70)
Set SumB = [b9].Resize(SumR.Rows.Count)

Dim c As Range
Set c = ActiveCell
SumR.Copy
SumB.PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
Application.CutCopyMode = False
c.Activate
[/vba]Это так, прямо на коленке :)
Если бы ТС объяснил, как именно поставлена задача - думаю, код был бы совершенно другим...

А, да, в коде же определенно не хватает:
[vba]
Код
If oCell Is Nothing Then MsgBox "Немає такої букви в цьому слові !": exit sub
[/vba]

Автор - AndreTM
Дата добавления - 11.10.2014 в 01:27
SkyPro Дата: Суббота, 11.10.2014, 03:28 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
букви
- літери.


skypro1111@gmail.com
 
Ответить
Сообщение
букви
- літери.

Автор - SkyPro
Дата добавления - 11.10.2014 в 03:28
Railord Дата: Суббота, 11.10.2014, 23:40 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Пополнение бывает несколько раз в день - реализовать это формулой наверное можно - но это лишние телодвижения в будущем на которых можно сэкономить макросом с кнопкой....
AndreTM - да вы все верно поняли вам отдельное спасибо - коды, которыми вы поделились со мной ранее, немного видоизменяя применил уже для решения многих несложных задач.
Вот и здесь хотел провернуть нечто подобное - сопоставить и найти текущую дату в строке с датами получилось, но дальше со сложением возникли проблемы...

Дата определяется формулой сегодня...
Данные с диапазона B9 и ниже - должны прибавляться к аналогичному по размеру диапазону - но уже в столбе с нужной датой. Так как данные могут вноситься несколько раз за день - то и просто копировать вставить не подходит... Нужно именно прибавлять. Как прибавить? Код от AndreTM, не прибавляет...

Все работает все прибавляет, я просто даже не ожидал, что все так просто... оказывается все происходит с помощью пастеспешел... - Это очень удобно!
Спасибо большое!


Nil novi sub luna, так что - век живи, век учись!)

Сообщение отредактировал Railord - Суббота, 11.10.2014, 23:54
 
Ответить
СообщениеПополнение бывает несколько раз в день - реализовать это формулой наверное можно - но это лишние телодвижения в будущем на которых можно сэкономить макросом с кнопкой....
AndreTM - да вы все верно поняли вам отдельное спасибо - коды, которыми вы поделились со мной ранее, немного видоизменяя применил уже для решения многих несложных задач.
Вот и здесь хотел провернуть нечто подобное - сопоставить и найти текущую дату в строке с датами получилось, но дальше со сложением возникли проблемы...

Дата определяется формулой сегодня...
Данные с диапазона B9 и ниже - должны прибавляться к аналогичному по размеру диапазону - но уже в столбе с нужной датой. Так как данные могут вноситься несколько раз за день - то и просто копировать вставить не подходит... Нужно именно прибавлять. Как прибавить? Код от AndreTM, не прибавляет...

Все работает все прибавляет, я просто даже не ожидал, что все так просто... оказывается все происходит с помощью пастеспешел... - Это очень удобно!
Спасибо большое!

Автор - Railord
Дата добавления - 11.10.2014 в 23:40
AndreTM Дата: Воскресенье, 12.10.2014, 00:05 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Как прибавить? Код от AndreTM, не прибавляет... Все работает все прибавляет
Ага :)
Просто было непонятно, какой из диапазонов будет получателем - SumB или SumR. Обозвали бы их oSource, oDest - сразу бы разобрались...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Как прибавить? Код от AndreTM, не прибавляет... Все работает все прибавляет
Ага :)
Просто было непонятно, какой из диапазонов будет получателем - SumB или SumR. Обозвали бы их oSource, oDest - сразу бы разобрались...

Автор - AndreTM
Дата добавления - 12.10.2014 в 00:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Суммирование двух диапазонов песочница (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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