Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2010, 17:57   #1
sharpei4
 
Регистрация: 11.04.2010
Сообщений: 3
По умолчанию Сумирование данных конкретных столбцов из разных книг

Доброго времени суток!
Подскажите пожалуйста! Как решить такую задачу?
Есть некая таблица шаблон с формой заказа для магазина. Магазинов несколько, соответственно каждый высылает свой заказ, заполняя столбец "кол-во в шт.". Нужно что бы данные собирались в одном файле и суммировались в столбце "кол-во в шт." т. е. давался общий заказ по всем магазинам. Нашел макрос который в прицепе умеет почти все что мне нужно только он в конечном файле выдает не весь шаблон целиком а только данные, которые собрал из разных книг и не суммирует их, а выдает сначала данные 1 книги ниже 2 книги и т.д. Пожалуйста помогите подкорректировать макрос, либо написать новый который решал бы мою проблему.
Код:
Option Explicit

Sub Consolidated_Range_of_Books_and_She ets()
Dim iPivotRange As Range, iDestinationRange As Range, iBeginRange As Range, Sheet
Dim iRngAddress As String, oAwb As String, DataSheet As String, _
iCopyAddress As String, sSheetName As String, oFile
Dim lLastrow As Long, lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str() As String

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
DataSheet = ThisWorkbook.ActiveSheet.Name
On Error Resume Next
Set iBeginRange = Application.InputBox("Выберите диапазон сбора данных." & vbCrLf & _
"1. При выборе только одной ячейки данные будут собраны со всех листов начиная с этой ячейки. " & _
vbCrLf & "2. При выделении нескольких ячеек данные будут собраны только с указанного диапазона всех листов.", Type:=8)
If iBeginRange Is Nothing Then Exit Sub
sSheetName = InputBox("Введите имя листа, с которого собирать данные(если не указан, то данные собираются со всех листов)", "Параметр")
If sSheetName = "" Then sSheetName = "*"
On Error GoTo 0
With Application.FileDialog(msoFileDialo gFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
For Each oFile In .SelectedItems
Workbooks.OpenText Filename:=oFile
oAwb = Dir(oFile, vbDirectory)

Application.ScreenUpdating = False
Workbooks(oAwb).Activate
For Each Sheet In Sheets
If Sheet.Name Like sSheetName Then
Sheet.Activate
Select Case iBeginRange.Count
Case 1
lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
iLastColumn = Cells.SpecialCells(xlLastCell).Colu mn
iCopyAddress = Range(Cells(iBeginRange.Row, iBeginRange.Column), Cells(lLastrow, iLastColumn)).Address
Case Else
iCopyAddress = iBeginRange.Address
lLastrow = iBeginRange.Rows.Count
iLastColumn = iBeginRange.Columns.Count
End Select
lLastRowMyBook = ThisWorkbook.Sheets(DataSheet).Cell s.SpecialCells(xlLastCell).Row + 1
iRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
Sheet.Range(iCopyAddress).Copy Destination:=ThisWorkbook.Sheets(Da taSheet).Range(iRngAddress)
End If
Next Sheet
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
sharpei4 вне форума Ответить с цитированием
Старый 11.04.2010, 18:06   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

А Вы не пробовали воспользоваться Консолидацией? Она может суммировать данные со многих книг и листов...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 11.04.2010, 20:37   #3
sharpei4
 
Регистрация: 11.04.2010
Сообщений: 3
По умолчанию

Пробовал, но когда я добавляю один из множества файлов и жму добавить появляется окно с тестом "Недоступная ссылка консолидации". Что делать в этом случаи??
sharpei4 вне форума Ответить с цитированием
Старый 11.04.2010, 21:45   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Надо перед консолидацией выделить пустую ячейку без данных. Чтоб новые данные не затерли имеющиеся на листе.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 11.04.2010, 22:01   #5
sharpei4
 
Регистрация: 11.04.2010
Сообщений: 3
По умолчанию

Пробовал все равно не выходит. Опять выводит сообщение "недоступная ссылка консолидации".

Последний раз редактировалось EducatedFool; 11.04.2010 в 23:06.
sharpei4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сбор данных с разных книг в одну Ledy1987 Microsoft Office Excel 26 20.04.2011 21:33
вставка данных из разных книг в один лист Aigulasan Microsoft Office Excel 3 26.03.2010 22:17
Подстановка данных из разных книг по 3-ем условиям hromovea Microsoft Office Excel 4 12.09.2009 12:38
Сводный отчет из разных книг ЯИЛЬЯ Microsoft Office Excel 7 12.09.2008 14:32
Свод из разных книг RUBEY Microsoft Office Excel 5 23.08.2008 13:25