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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование данных из одних столбцов в другие при условии... - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных из одних столбцов в другие при условии... (Макросы/Sub)
Копирование данных из одних столбцов в другие при условии...
tamerlanishe Дата: Среда, 11.06.2014, 01:07 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Доброго времени суток, друзья!
Обращаюсь к вам не в первый раз и всегда получаю вашу помощь, за что искренне вас благодарю!


На работе задали интересную задачку:

Имеются две таблицы на листах: "Лоты" и "Отчет". Требуется написать макрос, запускающийся через кнопку на листе "Лоты" или через макросы, который по совпадающим номерам ГПЗ из листа "Отчет" из столбцов 4, 2, 3 запишет соответствующие данные в столбцы 2, 3 и 4 листа "Лоты".

Иными словами: есть 2 таблицы, в каждой из которых есть столбец "Номер ГПЗ". И там, и там номера совпадают, но записаны в разном порядке. Так же в таблице "Отчет" есть сопутствующая информация (столбцы 4, 2, 3), которая должна быть перенесена в таблицу "Лоты" (в столбцы 2, 3 и 4 соответственно). Всё это чудо должно совершаться при нажатии кнопки, которую нужно нарисовать в таблице "Лоты".

ФАЙЛ ПРИЛАГАЕТСЯ

Заранее благодарю!
К сообщению приложен файл: Zadanie_Nalozhe.xls (58.5 Kb)
 
Ответить
Сообщение
Доброго времени суток, друзья!
Обращаюсь к вам не в первый раз и всегда получаю вашу помощь, за что искренне вас благодарю!


На работе задали интересную задачку:

Имеются две таблицы на листах: "Лоты" и "Отчет". Требуется написать макрос, запускающийся через кнопку на листе "Лоты" или через макросы, который по совпадающим номерам ГПЗ из листа "Отчет" из столбцов 4, 2, 3 запишет соответствующие данные в столбцы 2, 3 и 4 листа "Лоты".

Иными словами: есть 2 таблицы, в каждой из которых есть столбец "Номер ГПЗ". И там, и там номера совпадают, но записаны в разном порядке. Так же в таблице "Отчет" есть сопутствующая информация (столбцы 4, 2, 3), которая должна быть перенесена в таблицу "Лоты" (в столбцы 2, 3 и 4 соответственно). Всё это чудо должно совершаться при нажатии кнопки, которую нужно нарисовать в таблице "Лоты".

ФАЙЛ ПРИЛАГАЕТСЯ

Заранее благодарю!

Автор - tamerlanishe
Дата добавления - 11.06.2014 в 01:07
Rioran Дата: Среда, 11.06.2014, 09:37 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
tamerlanishe, здравствуйте.

Предлагаю простенький цикл макросом:

[vba]
Код
Sub Data_Manager()
Application.ScreenUpdating = False
With ThisWorkbook.Sheets(1)

Dim X As Long 'Пробег по строкам Лотов
Dim Y As Long 'Пробег по строкам Отчёта
Dim shtX As Worksheet 'Для обращений к листу Отчёты

Set shtX = ThisWorkbook.Sheets(2)

For X = 3 To .Cells(Rows.Count, 1).End(xlUp).Row
     For Y = 3 To shtX.Cells(Rows.Count, 1).End(xlUp).Row
         If .Cells(X, 1).Value = shtX.Cells(Y, 1).Value Then
             .Cells(X, 2).Value = shtX.Cells(Y, 4).Value
             .Cells(X, 3).Value = shtX.Cells(Y, 2).Value
             .Cells(X, 4).Value = shtX.Cells(Y, 3).Value
             Exit For
         End If
     Next Y
Next X

End With
Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: Find_N.xlsm (37.1 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеtamerlanishe, здравствуйте.

Предлагаю простенький цикл макросом:

[vba]
Код
Sub Data_Manager()
Application.ScreenUpdating = False
With ThisWorkbook.Sheets(1)

Dim X As Long 'Пробег по строкам Лотов
Dim Y As Long 'Пробег по строкам Отчёта
Dim shtX As Worksheet 'Для обращений к листу Отчёты

Set shtX = ThisWorkbook.Sheets(2)

For X = 3 To .Cells(Rows.Count, 1).End(xlUp).Row
     For Y = 3 To shtX.Cells(Rows.Count, 1).End(xlUp).Row
         If .Cells(X, 1).Value = shtX.Cells(Y, 1).Value Then
             .Cells(X, 2).Value = shtX.Cells(Y, 4).Value
             .Cells(X, 3).Value = shtX.Cells(Y, 2).Value
             .Cells(X, 4).Value = shtX.Cells(Y, 3).Value
             Exit For
         End If
     Next Y
Next X

End With
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Rioran
Дата добавления - 11.06.2014 в 09:37
Hugo Дата: Среда, 11.06.2014, 10:00 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
1. На работе?
2. Почему бы не записать рекордером как протянули 3 ВПР() - это тоже будет макрос.
3. Если данных много - то быстрее делать на словаре, ну и массивах - но это вероятно ещё не проходили...
Да и решение уже есть.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение1. На работе?
2. Почему бы не записать рекордером как протянули 3 ВПР() - это тоже будет макрос.
3. Если данных много - то быстрее делать на словаре, ну и массивах - но это вероятно ещё не проходили...
Да и решение уже есть.

Автор - Hugo
Дата добавления - 11.06.2014 в 10:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных из одних столбцов в другие при условии... (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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