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

Вход

Регистрация

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

 

= Мир MS Excel/Объединение "заявок" с разных книг, в одну на один лист. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Объединение "заявок" с разных книг, в одну на один лист.
Гость Дата: Суббота, 31.03.2012, 18:56 | Сообщение № 1
Группа: Гости
Добрый день. Впервые мне понадобилось решить задачу, связанную с работой в MS Excel. С ним я не знаком. И честно говоря не знаю, реализуема ли эта задача именно средствами MS Excel.
Я не ищу готового решения, я ищу самое простое решение моей задачи. Попробую её сформулировать:

Итак имеется список "товаров". Список ВСЕГДА фиксированный. Имеются "фирмы" заказывающие определенные товары из этого списка в определенном количестве. Каждая фирма отправляет по почте "заявку" в виде документа MS Exel.

В документе два столбца "Товар" и "Кол-во" и фиксированное кол-во строк (перечень товаров). Т.е. "фирма" напротив нужного товара расставляет кол-во и все.

Мне бы хотелось, чтобы в моей таблице автоматически формировался список "Товаров" который заказала каждая "фирма". Т.е. Столбецов с кол-вом было ровно столько, сколько прислали "заявок".

Теперь собственно суть задачи. Каждый день список "фирм" разный. Сегодня эти две... завтра этих пять... послезавтра других три.

А список МОЙ должен формироваться очень ПРОСТО. Я, как ничего не понимающий в этом деле человек, представляю себе это следующим образом: Я открываю свой список товаров, и нажимаю правой кнопкой мыши на столбце (пустом), выбираю пункт "Добавить столбец" и указываю файл с "заявкой" (документ). И все. А Excel автоматически в данном столбце ставит название "фирмы" в заголовок столбца и расставляет кол-во заказанных товаров по строкам. Дальше я тыкаю в следующий пустой столбец - "Добавить столбец" - Выбираю файл и, вуаля, автоматически в моем документе уже три столбца - "Товар", "Фирма1", "Фирма2". Потом, по окончании работы, я удаляю столбцы фирм и на следующий день легко и просто добавляю новые.

Есть вариант реализации у меня - Ctrl-C + Ctrl-V. Т.е открыл книгу "Фирма1", скопировал столбец - вставил в свою таблицу, закрыл книгу. Открыл книгу "Фирма2" - скопировал столбец, закрыл книгу. Этот вариант плох тем, что открывать и копировать приходиться ОЧЕНЬ много, и каждый столбец нужно именовать. Имея, скажем, по 40 разношерстных заявок, это превращается в многочасовые посиделки.

Самое главное, что я хочу спросить. Возможно ли реализовать именно такую схему работы средствами Excel? Нужно ли для этого средства программирования? В какую сторону "копать" решение? Я ни разу не работал ни со сводными таблицами ни со списками в этой программе? Какой из инструментов вы посоветуете использовать? С чего начать изучение этого вопроса?
 
Ответить
СообщениеДобрый день. Впервые мне понадобилось решить задачу, связанную с работой в MS Excel. С ним я не знаком. И честно говоря не знаю, реализуема ли эта задача именно средствами MS Excel.
Я не ищу готового решения, я ищу самое простое решение моей задачи. Попробую её сформулировать:

Итак имеется список "товаров". Список ВСЕГДА фиксированный. Имеются "фирмы" заказывающие определенные товары из этого списка в определенном количестве. Каждая фирма отправляет по почте "заявку" в виде документа MS Exel.

В документе два столбца "Товар" и "Кол-во" и фиксированное кол-во строк (перечень товаров). Т.е. "фирма" напротив нужного товара расставляет кол-во и все.

Мне бы хотелось, чтобы в моей таблице автоматически формировался список "Товаров" который заказала каждая "фирма". Т.е. Столбецов с кол-вом было ровно столько, сколько прислали "заявок".

Теперь собственно суть задачи. Каждый день список "фирм" разный. Сегодня эти две... завтра этих пять... послезавтра других три.

А список МОЙ должен формироваться очень ПРОСТО. Я, как ничего не понимающий в этом деле человек, представляю себе это следующим образом: Я открываю свой список товаров, и нажимаю правой кнопкой мыши на столбце (пустом), выбираю пункт "Добавить столбец" и указываю файл с "заявкой" (документ). И все. А Excel автоматически в данном столбце ставит название "фирмы" в заголовок столбца и расставляет кол-во заказанных товаров по строкам. Дальше я тыкаю в следующий пустой столбец - "Добавить столбец" - Выбираю файл и, вуаля, автоматически в моем документе уже три столбца - "Товар", "Фирма1", "Фирма2". Потом, по окончании работы, я удаляю столбцы фирм и на следующий день легко и просто добавляю новые.

Есть вариант реализации у меня - Ctrl-C + Ctrl-V. Т.е открыл книгу "Фирма1", скопировал столбец - вставил в свою таблицу, закрыл книгу. Открыл книгу "Фирма2" - скопировал столбец, закрыл книгу. Этот вариант плох тем, что открывать и копировать приходиться ОЧЕНЬ много, и каждый столбец нужно именовать. Имея, скажем, по 40 разношерстных заявок, это превращается в многочасовые посиделки.

Самое главное, что я хочу спросить. Возможно ли реализовать именно такую схему работы средствами Excel? Нужно ли для этого средства программирования? В какую сторону "копать" решение? Я ни разу не работал ни со сводными таблицами ни со списками в этой программе? Какой из инструментов вы посоветуете использовать? С чего начать изучение этого вопроса?

Автор - Гость
Дата добавления - 31.03.2012 в 18:56
Гость Дата: Суббота, 31.03.2012, 23:04 | Сообщение № 2
Группа: Гости
Частичное, но очень эффективное решение задачи я нашел на одном ресурсе (если администрация не против дал бы ссылку). Это макрос, который позволяет все листы из большого кол-ва книг объеденить в один лист.

Выглядит так:

[vba]
Code
Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
MultiSelect:=True, Title:="Files to Merge")
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Не выбрано ни одного файла!"
GoTo ExitHandler
End If
x = 1
While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
[/vba]

Очень удобно отбираются "заявки" в пять секунд. Но каждая из них попадает на отдельный лист.
Остается только сделать так, чтоб с каждого листа графа "Кол-во" записывалась в мою табличку и именовалась автоматически.
Пытаюсь что-нибудь найти. Перечитал массу "китайский грамот". Как плохо быть нубом. Ниче не понимаю....
 
Ответить
СообщениеЧастичное, но очень эффективное решение задачи я нашел на одном ресурсе (если администрация не против дал бы ссылку). Это макрос, который позволяет все листы из большого кол-ва книг объеденить в один лист.

Выглядит так:

[vba]
Code
Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
MultiSelect:=True, Title:="Files to Merge")
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Не выбрано ни одного файла!"
GoTo ExitHandler
End If
x = 1
While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
[/vba]

Очень удобно отбираются "заявки" в пять секунд. Но каждая из них попадает на отдельный лист.
Остается только сделать так, чтоб с каждого листа графа "Кол-во" записывалась в мою табличку и именовалась автоматически.
Пытаюсь что-нибудь найти. Перечитал массу "китайский грамот". Как плохо быть нубом. Ниче не понимаю....

Автор - Гость
Дата добавления - 31.03.2012 в 23:04
Гость Дата: Суббота, 31.03.2012, 23:06 | Сообщение № 3
Группа: Гости
Простите, в строке "Это макрос, который позволяет все листы из большого кол-ва книг объеденить в один лист." - ошибка. Следует читать, как "Это макрос, который позволяет все листы из большого кол-ва книг объеденить в одну книгу."
 
Ответить
СообщениеПростите, в строке "Это макрос, который позволяет все листы из большого кол-ва книг объеденить в один лист." - ошибка. Следует читать, как "Это макрос, который позволяет все листы из большого кол-ва книг объеденить в одну книгу."

Автор - Гость
Дата добавления - 31.03.2012 в 23:06
Jhonson Дата: Вторник, 03.04.2012, 10:46 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Недавно реализовывал нечто подобное!
[vba]
Code
Option Explicit
Public timecreate As Variant
Public distance As String
Public kolfile As Integer

Sub Getfiles()
Dim fName As String, NewName As String, msg As Integer
kolfile = 0
'distance = "\\ts\DATA\Exchange\gaz\"
distance = "e:\zakaz\"
fName = Dir(distance & "*.*")
Do While fName <> ""
     timecreate = FileDateTime(distance & fName)
     Workbooks.Open distance & fName
         data fName
     Workbooks(fName).Close True
     NewName = Replace(Replace(timecreate, ".", ""), ":", "") & fName
     Name distance & fName As distance & "/reports/" & NewName
     kolfile = kolfile + 1
     fName = Dir
Loop
msg = MsgBox("Обработано файлов: " & kolfile, 0, "Обработка завершена")
End Sub

Sub data(file_ As String)
Dim col As Integer, schet As Integer
With Workbooks("full.xlsm").Sheets(1)
     col = .Cells(1, Columns.Count).End(xlToLeft).Column
     schet = .Cells(Rows.Count, 1).End(xlUp).Row
     .Range("a2:a" & schet).Offset(, col).Value = Workbooks(file_).Sheets(1).Range("b3:b" & schet + 1).Value
     .Range("a1").Offset(, col).Value = Workbooks(file_).Sheets(1).Range("a1").Value
End With
End Sub
[/vba]
Процедура Getfiles() открывает поочередно файлы заявок выполняет процедуру считывания информации data(file_ As String) после обработки переносит файл в папку reports добавляя приставку к имени файла.
В приложенном архиве папка zakaz в ней должны находится файлы заявок, а так же папки reports, куда будут складываться обработанные файлы, и папка full где находится основной файл full.xlsm
путь к папке zakaz находится в переменной distance
К сообщению приложен файл: zakaz.rar (30.6 Kb)


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
СообщениеНедавно реализовывал нечто подобное!
[vba]
Code
Option Explicit
Public timecreate As Variant
Public distance As String
Public kolfile As Integer

Sub Getfiles()
Dim fName As String, NewName As String, msg As Integer
kolfile = 0
'distance = "\\ts\DATA\Exchange\gaz\"
distance = "e:\zakaz\"
fName = Dir(distance & "*.*")
Do While fName <> ""
     timecreate = FileDateTime(distance & fName)
     Workbooks.Open distance & fName
         data fName
     Workbooks(fName).Close True
     NewName = Replace(Replace(timecreate, ".", ""), ":", "") & fName
     Name distance & fName As distance & "/reports/" & NewName
     kolfile = kolfile + 1
     fName = Dir
Loop
msg = MsgBox("Обработано файлов: " & kolfile, 0, "Обработка завершена")
End Sub

Sub data(file_ As String)
Dim col As Integer, schet As Integer
With Workbooks("full.xlsm").Sheets(1)
     col = .Cells(1, Columns.Count).End(xlToLeft).Column
     schet = .Cells(Rows.Count, 1).End(xlUp).Row
     .Range("a2:a" & schet).Offset(, col).Value = Workbooks(file_).Sheets(1).Range("b3:b" & schet + 1).Value
     .Range("a1").Offset(, col).Value = Workbooks(file_).Sheets(1).Range("a1").Value
End With
End Sub
[/vba]
Процедура Getfiles() открывает поочередно файлы заявок выполняет процедуру считывания информации data(file_ As String) после обработки переносит файл в папку reports добавляя приставку к имени файла.
В приложенном архиве папка zakaz в ней должны находится файлы заявок, а так же папки reports, куда будут складываться обработанные файлы, и папка full где находится основной файл full.xlsm
путь к папке zakaz находится в переменной distance

Автор - Jhonson
Дата добавления - 03.04.2012 в 10:46
Pulse Дата: Вторник, 03.04.2012, 11:03 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 213
Репутация: 16 ±
Замечаний: 0% ±

2013
Пустое плюс твёрдое всегда пустое. Гость, вы столько всего написали, но файл не приложили, если не прикрепите, тема скорее всего заглохнет. Кто за вас будет заполнять ваши формы?
Приложите ваш файл и в нём всё опишите. Тут грамотные и тактичные люди, обязательно помогут.
 
Ответить
СообщениеПустое плюс твёрдое всегда пустое. Гость, вы столько всего написали, но файл не приложили, если не прикрепите, тема скорее всего заглохнет. Кто за вас будет заполнять ваши формы?
Приложите ваш файл и в нём всё опишите. Тут грамотные и тактичные люди, обязательно помогут.

Автор - Pulse
Дата добавления - 03.04.2012 в 11:03
  • Страница 1 из 1
  • 1
Поиск:

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