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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2015, 22:05   #1
uniturs
 
Регистрация: 10.04.2013
Сообщений: 6
По умолчанию Копирование данных из книги в другую книгу по параметрам

Добрый день!
Помогите пожалуйста!
Нужен макрос копирования данных из книги свод с листа "Лист1" в книгу инструмент на лист "ИсхДанные_ЦЕНТР" по параметрам : N подразделения, роль, драйвер
в столбец соответствующего месяца , месяцу A2 в файле свод.
Объяснил сумбурно, и если не понятно прокомментирую.
Очень нужна помощь!
Вложения
Тип файла: rar 9014685.rar (62.5 Кб, 15 просмотров)

Последний раз редактировалось uniturs; 30.07.2015 в 22:12.
uniturs вне форума Ответить с цитированием
Старый 31.07.2015, 20:37   #2
uniturs
 
Регистрация: 10.04.2013
Сообщений: 6
По умолчанию нужна помощь

добрый день!
неужели такая сложная задача, что ни кто не может помочи?
uniturs вне форума Ответить с цитированием
Старый 31.07.2015, 21:51   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Сложная.
Честно пытался вчера понять что нужно сделать, ещё сейчас глянул - ничего не понял, сложно очень...
С драйвером не понял, что нужно копировать - не понял.
Разжуйте.
Вообще достаточно протянуть одну формулу, затем заменить на значение. Если примерно правильно понял.

P.S. Хотя смотрю на другом форуме уже разобрались с драйвером...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 31.07.2015 в 22:06.
Hugo121 вне форума Ответить с цитированием
Старый 31.07.2015, 22:22   #4
uniturs
 
Регистрация: 10.04.2013
Сообщений: 6
По умолчанию комент

я попытался в файлах все обозначить.
в файле Свод ряд параметров: код ГОСБ/ОСБ, Должность, и столбцы : Штатная численность, Вакансии, Кол-во уволенных по собственному желанию.
Надо скопировать данные по этим параметрам в файл Инструмент на лист ИсхДанные_ЦЕНТР
в столбец диапазона N-Y соответствующий данным из ячейки A2 книги Свод, Лист1.
т.е ГОСБ -8, должность-КБП, столбец - Штатная численность = ячейка С4 = 6
надо скопировать в книгу Инструмент , первый лист строка 304, столбец C = ячейка С304, т.к ячейка соответствует параметрам из книги Свод.

Буду очень признателен если поможете.
Решения пока нет и на других форумах!
uniturs вне форума Ответить с цитированием
Старый 31.07.2015, 23:13   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Т.е. критерии:

код ГОСБ/ОСБ
должности
Штатная численность/Вакансии/Кол-во уволенных по собстенному желанию

копировать нужно в Июнь

Достаточно было изначально скопировать данные хотя бы одной строки и указать почему имеено это и именно сюда.
Теперь понятно, легко сделать на словаре. Работаете под Виндой?
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 31.07.2015 в 23:21.
Hugo121 вне форума Ответить с цитированием
Старый 31.07.2015, 23:47   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вот так вероятно (чуть позаимствовал кода - лень самому писать...):
Код:
Option Explicit

Sub tt()
    Dim m$, a(), b(), c(), i&, t$

    With CreateObject("scripting.dictionary"): .comparemode = 1
        With Workbooks("свод.xlsb").Sheets(1)
            m = .Cells(2, 1).Value
            a = .Range(.[F4], .Range("A" & .Rows.Count).End(xlUp)).Value
        End With
        For i = 1 To UBound(a)
            .Item(a(i, 1) & "|" & a(i, 2) & "|Ш") = a(i, 3)
            .Item(a(i, 1) & "|" & a(i, 2) & "|В") = a(i, 4)
            .Item(a(i, 1) & "|" & a(i, 2) & "|К") = a(i, 6)
        Next
        With Workbooks("инструмент.xlsx").Sheets(1)
            i = .Range("C" & .Rows.Count).End(xlUp).Row
            a = .Range(.[C7], .Range("C" & i)).Value
            b = .Range(.[G7], .Range("G" & i)).Value
            c = .Range(.[J7], .Range("J" & i)).Value
        End With
        ReDim d(1 To UBound(a), 1 To 1)

        For i = 1 To UBound(a)
            t = c(i, 1) & "|" & a(i, 1) & "|" & Left(b(i, 1), 1)
            If .exists(t) Then d(i, 1) = .Item(t)
        Next
    End With

    Workbooks("инструмент.xlsx").Sheets(1).Range("N5:Y5").Find(m).Offset(2).Resize(UBound(d)).Value = d

End Sub
Кстати, можно не создавать массив d() пустым, а брать его с листа сразу из нужного столбца, тогда его можно дополнять свежими данными, если вдруг они будут поступать частями.
Ну и поанализировать можно - нет ли изменений в ранее занесённых данных.
Но т.к. такого запроса нет - то так и не делал.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 01.08.2015 в 00:07.
Hugo121 вне форума Ответить с цитированием
Старый 01.08.2015, 17:45   #7
uniturs
 
Регистрация: 10.04.2013
Сообщений: 6
По умолчанию спасибо!

Спасибо!
Все верно поняли.
Приношу извинения, что изначально не понятно изложил задачу.
Попробую Ваш код. Результат сообщу!
Спасибо!
uniturs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос данных из книги в книгу по параметрам uniturs Microsoft Office Excel 0 28.07.2015 22:07
Копирование (перенос) данных из одной книги в другую по ячейкам Mpgeshka Microsoft Office Excel 42 16.07.2015 13:16
Копирование данных из одной книги в другую в разные столбцы. kipish_lp Microsoft Office Excel 15 15.07.2015 07:27
Копирование диаграмм в другую книгу adiodas Microsoft Office Excel 0 21.03.2011 20:58
Копирование данных из одной рабочей книги в другую макросом. Andrey3055 Microsoft Office Excel 2 30.10.2009 22:00