С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 50
1

Разнести таблицу из одного файла в другие

26.03.2014, 08:55. Показов 4231. Ответов 50
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите плиз
Есть файл эксель.
колонка 1колонка 2колонка 3колонка 4колонка 5колонка 6колонка 7колонка 8колонка 9колонка 10
инфинфинфинфинфинфинфкомпания 1инфинф
инфинфинфинфинфинфинфкомпания 1инфинф
инфинфинфинфинфинфинфкомпания 2инфинф
инфинфинфинфинфинфинфкомпания 3инфинф
инфинфинфинфинфинфинфкомпания 2инфинф
инфинфинфинфинфинфинфкомпания 3инфинф
инфинфинфинфинфинфинфкомпания 4инфинф
инфинфинфинфинфинфинфкомпания 5инфинф
инфинфинфинфинфинфинфкомпания 4инфинф
инфинфинфинфинфинфинфкомпания 5инфинф
Нужно сделать эксель файл с макросом, который заберет эту таблицу в свой файл (из определенного пути) и раскидает 8 колонку с компаниями в каждый лист так, что бы каждая компания была на своем листе, причем без привязки макроса к компаниям (нужно что бы макрос сам определял какое количество компаний в колонке 8 и сколько от этого будет листов), а после этого (или перед этим всем) на всех листах удалил 2,3,5,10 столбцы, а 8й перенес в первый столбец.
Не пойму как это реализовать
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2014, 08:55
Ответы с готовыми решениями:

Скопировать слова из одного файла в два другие
Здравствуйте. Не подскажите как можно в bat сделать так что бы он из первой строки брал 3 и 4 слово...

передача данных формы из одного файла в другие
Добрый день! прошу помощи! у меня есть страница сайта, где пользователь заполняет форму. заполнив...

Разнести данные из одного листа в другой по условию
Есть 2 листа. Нужно сделать так что бы когда во 2 лист заводишь данные они переносились в 1 лист. 2...

Разнести таблицу в файле на несколько других файлов
решить в консольном режиме: Дан текстовый файл с именем NameT, содержащий таблицу из трех столбцов...

50
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
26.03.2014, 10:17 2
начнем сначала! с какого момента начинаются затруднения ?
1.
Цитата Сообщение от gdm82 Посмотреть сообщение
Нужно сделать эксель файл с макросом, который заберет эту таблицу в свой файл (из определенного пути)
не понял. должна открыться указанная книга эксель (из определенного пути), а его содержимое перекинуться в книгу эксель содержащую данный макрос ?
2. Попробуйте включить макрорекордер и выполнить операции из который состоит ваша последовательность действий: например
Цитата Сообщение от gdm82 Посмотреть сообщение
причем без привязки макроса к компаниям (нужно что бы макрос сам определял какое количество компаний в колонке 8 и сколько от этого будет листов)
ставьте курсов в ячейку H1, жмите кнопки Ctrl+Shift+End. таким образом выделится последняя заполненная строка в этом столбце. На выходе получите код
Visual Basic
1
2
    Range("H1").Select
    Range(Selection, Selection.End(xlDown)).Select
выполнив все шаги руками получите ряд макросов и опыт. дальше потребуется небольшая доработка кода, пишите задавайте вопросы
0
6958 / 2861 / 550
Регистрация: 19.10.2012
Сообщений: 8,742
26.03.2014, 10:37 3
Тут нужно коллекцию использовать или словарь.
Ну или скопировать все компании на новый лист, удалить там дубликаты - если эклель 2007 или выше.
Так получите список уникальных компаний.
Ну а затем по этому списку можно фильтровать или отбирать записи.
И по задаче - не вижу необходимости "отбирать в свой файл". Зачем?
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 50
26.03.2014, 10:55  [ТС] 4
Цитата Сообщение от Surrogate Посмотреть сообщение
1.
Сообщение от gdm82
Нужно сделать эксель файл с макросом, который заберет эту таблицу в свой файл (из определенного пути)
не понял. должна открыться указанная книга эксель (из определенного пути), а его содержимое перекинуться в книгу эксель содержащую данный макрос ?
2. Попробуйте включить макрорекордер и выполнить операции из который состоит ваша последовательность действий: например
Сообщение от gdm82
причем без привязки макроса к компаниям (нужно что бы макрос сам определял какое количество компаний в колонке 8 и сколько от этого будет листов)
ставьте курсов в ячейку H1, жмите кнопки Ctrl+Shift+End. таким образом выделится последняя заполненная строка в этом столбце. На выходе получите код
1. да. книга эксель лежит в папке, а вывести листы надо в отдельном экселе, в котором и будет макрос храниться. желательно с автозапуском при открытии книги. 1 листом можно даже оставить скопированное, а последующими сделать разбивку.

Добавлено через 1 минуту
Цитата Сообщение от Hugo121 Посмотреть сообщение
Тут нужно коллекцию использовать или словарь.
Ну или скопировать все компании на новый лист, удалить там дубликаты - если эклель 2007 или выше.
Так получите список уникальных компаний.
Ну а затем по этому списку можно фильтровать или отбирать записи.
И по задаче - не вижу необходимости "отбирать в свой файл". Зачем?
затем, что необходима автоматизация, да бы не было лишних действий, нажал файлок, а там все уже разбито как надо из заменяющегося раз в день файла.
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
26.03.2014, 10:59 5
Цитата Сообщение от gdm82 Посмотреть сообщение
затем, что необходима автоматизация, да бы не было лишних действий, нажал файлок, а там все уже разбито как надо из заменяющегося раз в день файла.
Hugo121 предложил вам другой вариант реализации, как вы можете сделать свою автоматизацию

Добавлено через 12 секунд
дерзайте…
0
6958 / 2861 / 550
Регистрация: 19.10.2012
Сообщений: 8,742
26.03.2014, 11:00 6
Кто-то кого-то не понял...
Вы пишите "Нужно сделать эксель файл с макросом, который заберет эту таблицу в свой файл" - зачем заберёт? Да и "эксель файл с макросом" не обязательно, можно vbs вероятно написать, будет проще использовать...
То, что далее " и раскидает 8 колонку с компаниями в каждый лист" это понятно, получим файл с кучей листов, по одному на компанию. А общий файл зачем? И если нужен - то это всё нужно в одном файле или в двух?
А вообще всех этих вопросов можно избежать, если показать что есть и что нужно В ФАЙЛАХ.
0
Surrogate
26.03.2014, 11:01
  #7

Не по теме:

Цитата Сообщение от Hugo121 Посмотреть сообщение
Вы пишите "Нужно сделать эксель файл с макросом, который заберет эту таблицу в свой файл" -зачем?
так в методичке написано

0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 50
26.03.2014, 11:09  [ТС] 8
Цитата Сообщение от Hugo121 Посмотреть сообщение
Кто-то кого-то не понял...
Вы пишите "Нужно сделать эксель файл с макросом, который заберет эту таблицу в свой файл" - зачем заберёт? Да и "эксель файл с макросом" не обязательно, можно vbs вероятно написать, будет проще использовать...
То, что далее " и раскидает 8 колонку с компаниями в каждый лист" это понятно, получим файл с кучей листов, по одному на компанию. А общий файл зачем? И если нужен - то это всё нужно в одном файле или в двух?
А вообще всех этих вопросов можно избежать, если показать что есть и что нужно В ФАЙЛАХ.
В целом да. Можно и vbsом, но я не вкурсе как был бы шаблон, а там поправлю уже колонки.
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
26.03.2014, 11:24 9
Цитата Сообщение от gdm82 Посмотреть сообщение
В целом да. Можно и vbsом
а вам таки vba, vbsом ? Есть что править то ?

Добавлено через 5 минут
какие-нибудь учебники/справочники/методички пытались читать например ?
Учебники, справочники, самоучители
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 50
26.03.2014, 11:26  [ТС] 10
Surrogate, просьба флуд бессмысленный не разводить. Я помощи прошу, а не троллинга. И да, читал, и часть проблемы знаю как решить, а часть нет.
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
26.03.2014, 11:29 11
я вас не троллю, если вы что-то читали. давайте выкладывать свой код, и будем разбираться как его доводить до ума!
0
6958 / 2861 / 550
Регистрация: 19.10.2012
Сообщений: 8,742
26.03.2014, 11:37 12
Зря Вы Surrogate отталкиваете - может быть как раз он и поможет, на меня особо не надейтесь...
Я только хотел прояснить задачу, для всех. Ну и подсказал варианты.
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
26.03.2014, 11:40 13
Цитата Сообщение от Hugo121 Посмотреть сообщение
Зря Вы Surrogate отталкиваете - может быть как раз он и поможет
Surrogate таки может помочь, но помочь и сделать за топикстартера это разные разницы
0
15153 / 6426 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
26.03.2014, 11:50 14
Можно так. Добавить строку заголовка (если ее нет), отсортировать по ст. 8, Данные - Пром. итоги - при каждом изменении в "ст. 8" добавить итоги по "ст. 1", количество. Таблица будет разбита на куски, которые перенести на листы.
1
6958 / 2861 / 550
Регистрация: 19.10.2012
Сообщений: 8,742
26.03.2014, 12:06 15
Вот заготовка на допиливание:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
 
Sub tt()
    Dim a(), i&, ii&, k
 
    With CreateObject("Scripting.Dictionary"): .comparemode = 1
        a = ActiveSheet.UsedRange.Value
        For i = 1 To UBound(a): .Item(a(i, 8)) = .Item(a(i, 8)) + 1: Next
        For Each k In .keys
            ReDim b(1 To .Item(k), 1 To 6): ii = 0
            For i = 1 To UBound(a)
                If a(i, 8) = k Then
                    ii = ii + 1
                    b(ii, 1) = k
                    b(ii, 2) = a(i, 1)
                    b(ii, 3) = a(i, 4)
                    b(ii, 4) = a(i, 6)
                    b(ii, 5) = a(i, 7)
                    b(ii, 6) = a(i, 9)
                End If
            Next
            Worksheets.Add(After:=Sheets(Sheets.Count)).[a1].Resize(ii, 6) = b
        Next
 
    End With
End Sub
2
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 50
27.03.2014, 05:09  [ТС] 16
Цитата Сообщение от Hugo121 Посмотреть сообщение
Вот заготовка на допиливание:
как-то у меня слишком мало опыта, что бы понять что куда. кроме создания чистого листа ничего не делается, вероятно надо, что бы что-то где-то лежало.

Нужна помощь в реализации действия: определение количества разных значений в столбце и создании количества листов с этими значениями. Как-то это простой командой можно сделать? а то я начал с фильтрами баловаться и там выходит черти что.
И вопрос еще один:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    ChDir "D:\file\out"
    Workbooks.Open Filename:="D:\file\out\1.xls"
 
    Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("L:L").Cut
    Columns("A:A").Select
    ActiveSheet.Paste
    Columns("L:L").Delete Shift:=xlToLeft
    
    Cells.Select
    Selection.Copy
    Windows("2.xls").Activate
    Cells.Select
    ActiveSheet.Paste
    Windows("1.xls").Activate
    ActiveWindow.Close
при закрытии файла 1, он спрашивать сохранить ли изменения и в буфере есть данныйе, приходится 2 раза жать "нет", что нужно дописать, что бы он по умолчанию закрывал без сохранения и буфер обмена не запоминал?
0
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
27.03.2014, 09:03 17
Отключить вывод уведомлений :

Visual Basic
1
Application.DisplayAlerts = False
1
6958 / 2861 / 550
Регистрация: 19.10.2012
Сообщений: 8,742
27.03.2014, 10:46 18
Для моего кода нужен открытый лист с данными, ну и сам код в стандартном модуле (может быть и из другого модуля сработает, не проверял...). Ну и всё.
А, ещё библиотека scrrun.dll в системе - очень редко, но бывает что её нет.
Да, и конечно MSExcel под Windows

P.S."определение количества разных значений в столбце и создании количества листов с этими значениями" в моём коде есть, можете пользоваться.
0
1123 / 235 / 37
Регистрация: 15.03.2010
Сообщений: 723
27.03.2014, 10:58 19
Лучший ответ Сообщение было отмечено gdm82 как решение

Решение

Вариант с раширенным фильтром.
Вложения
Тип файла: xls Книга1.xls (42.5 Кб, 14 просмотров)
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 50
27.03.2014, 12:07  [ТС] 20
Цитата Сообщение от dzug Посмотреть сообщение
Отключить вывод уведомлений :
Код Visual Basic
1
Application.DisplayAlerts = False
спасибо, помогло.

Добавлено через 6 минут
Цитата Сообщение от SlavaRus Посмотреть сообщение
Вариант с раширенным фильтром.
Вложения
Книга1.xls (42.5 Кб, 1 просмотров)
Огромное спасибо!
0
27.03.2014, 12:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2014, 12:07
Помогаю со студенческими работами здесь

Перенос строк из таблицы одного файла в таблицу другого файла с проверкой на наличие в ней записей
Добрый день. Помогите пожалуйста написать код для переноса строк из таблицы одного файла в...

Как образ одного винта разнести на более 100 компов?
Есть клуб и есть тестовая тачька, нужно снеё сделать образ и разнести по всему клубу. Железо везде...

Добавить блоки строк из одного txt файла в другие txt файлы
Здравствуйте. Можно ли сделать распределение блоков из одного txt в другие? В одном txt файле...

Из одного файла считать целые числа, в другие файлы записать четные и нечетные числа
Нужно с одного файла считать целые числа и в другие файлы записать четные и нечетные числа. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru