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

Вход

Регистрация

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

 

= Мир MS Excel/Перенос данных по параметрам - Мир MS Excel

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

Добрый день! Помогите написать макрос.
Необходимо перенести данные с листа Свод на лист1
по параметрам: должность, код ГОСБ/ОСБ, драйвера
в столбец соответствующий месяцу в ячейке B2 листа Свод
К сообщению приложен файл: 4774593.xlsx (10.3 Kb)


Сообщение отредактировал Juri01 - Понедельник, 27.07.2015, 22:37
 
Ответить
СообщениеДобрый день! Помогите написать макрос.
Необходимо перенести данные с листа Свод на лист1
по параметрам: должность, код ГОСБ/ОСБ, драйвера
в столбец соответствующий месяцу в ячейке B2 листа Свод

Автор - Juri01
Дата добавления - 27.07.2015 в 22:29
KSV Дата: Понедельник, 27.07.2015, 22:37 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер!
Приложите свой файл. Реальные данные можете заменить фиктивными, оставив буквально несколько строк на листе Свод (чтоб протестировать).


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДобрый вечер!
Приложите свой файл. Реальные данные можете заменить фиктивными, оставив буквально несколько строк на листе Свод (чтоб протестировать).

Автор - KSV
Дата добавления - 27.07.2015 в 22:37
Juri01 Дата: Понедельник, 27.07.2015, 22:58 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

файл приложил.
К сообщению приложен файл: 5771941.xlsx (10.3 Kb)


Сообщение отредактировал Juri01 - Понедельник, 27.07.2015, 23:20
 
Ответить
Сообщениефайл приложил.

Автор - Juri01
Дата добавления - 27.07.2015 в 22:58
KSV Дата: Вторник, 28.07.2015, 02:28 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
можно так
К сообщению приложен файл: 5771941.xlsm (19.1 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениеможно так

Автор - KSV
Дата добавления - 28.07.2015 в 02:28
Juri01 Дата: Вторник, 28.07.2015, 09:44 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

спасибо!
пытался модифицировать макрос под реалии. но моих навыков явно не хватило.
нужен макрос переноса данных из книги свод в книгк инструмент
по параметрам : N подразделения, роль, драйвер
в столбец соответствующего месяца - A2 в файле свод.
объяснил сумбурно, но кажется посмотрев файлы должно быть понятно.
К сообщению приложен файл: 1898639.rar (62.5 Kb)
 
Ответить
Сообщениеспасибо!
пытался модифицировать макрос под реалии. но моих навыков явно не хватило.
нужен макрос переноса данных из книги свод в книгк инструмент
по параметрам : N подразделения, роль, драйвер
в столбец соответствующего месяца - A2 в файле свод.
объяснил сумбурно, но кажется посмотрев файлы должно быть понятно.

Автор - Juri01
Дата добавления - 28.07.2015 в 09:44
Juri01 Дата: Пятница, 31.07.2015, 20:43 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

добрый день!
неужели такая сложная задача, что ни кто не может помочь?
 
Ответить
Сообщениедобрый день!
неужели такая сложная задача, что ни кто не может помочь?

Автор - Juri01
Дата добавления - 31.07.2015 в 20:43
KSV Дата: Пятница, 31.07.2015, 20:50 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Задача - простейшая! И как ее решить, я вам показал на вашем примере. Только мне не понятно, зачем выкладывать ТАКОЙ пример, который отличается от вашего реального файла, тем более, если перенести на свой рабочий файл самостоятельно вы не можете?


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеЗадача - простейшая! И как ее решить, я вам показал на вашем примере. Только мне не понятно, зачем выкладывать ТАКОЙ пример, который отличается от вашего реального файла, тем более, если перенести на свой рабочий файл самостоятельно вы не можете?

Автор - KSV
Дата добавления - 31.07.2015 в 20:50
Juri01 Дата: Пятница, 31.07.2015, 22:25 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

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


Сообщение отредактировал Juri01 - Пятница, 31.07.2015, 22:29
 
Ответить
Сообщениепереоценил свои силы.
Спасибо!
В решении представленном Вами, и за что огромное спасибо, переносится данные только столбца - штатная численность,
столбцы Вакансии и Кол-во уволенных по собстенному желанию не копируются в соответствующие ячейки.
Спасибо!

Автор - Juri01
Дата добавления - 31.07.2015 в 22:25
Hugo Дата: Пятница, 31.07.2015, 23:47 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Вот так вероятно (чуть позаимствовал кода - лень самому писать...):
[vba]
Код
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
[/vba]

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


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Суббота, 01.08.2015, 00:07
 
Ответить
СообщениеВот так вероятно (чуть позаимствовал кода - лень самому писать...):
[vba]
Код
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
[/vba]

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

Автор - Hugo
Дата добавления - 31.07.2015 в 23:47
KSV Дата: Суббота, 01.08.2015, 01:06 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
как вариант
К сообщению приложен файл: 3165987.zip (72.0 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениекак вариант

Автор - KSV
Дата добавления - 01.08.2015 в 01:06
Juri01 Дата: Суббота, 01.08.2015, 17:59 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

KSV,
Спасибо! Проверю! Сообщу о результате!
Спасибо!
 
Ответить
СообщениеKSV,
Спасибо! Проверю! Сообщу о результате!
Спасибо!

Автор - Juri01
Дата добавления - 01.08.2015 в 17:59
Juri01 Дата: Суббота, 08.08.2015, 17:37 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Juri01,
Все проверил. Работает! Еще раз спасибо!
Единственный вопрос! Если в файле свод и инструмент в инструмент добавятся строки с новыми данными, они будут так же копироваться в инструмент?
Я попробовал, но они не копируются.
Спасибо!
 
Ответить
СообщениеJuri01,
Все проверил. Работает! Еще раз спасибо!
Единственный вопрос! Если в файле свод и инструмент в инструмент добавятся строки с новыми данными, они будут так же копироваться в инструмент?
Я попробовал, но они не копируются.
Спасибо!

Автор - Juri01
Дата добавления - 08.08.2015 в 17:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос данных по параметрам (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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