Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908

Прикрутить столбец из другой файла с условием

25.01.2016, 14:04. Показов 1500. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть задачка:
имеется 2 файла:
в 1м файле перечень
во 2м файле перечень и еще один столбец.
Необходимо к перечню 1го файла прикрутить тот столбец что во втором файле, учитывая что перечни не полностью совпадают и расположение совпадающих различно.
Пример прилагаетсяв трех файлах:1й файл,2й файл и результирующий.
Вложения
Тип файла: zip Пример.zip (21.1 Кб, 4 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.01.2016, 14:04
Ответы с готовыми решениями:

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

Столбец для вычислений - как дать ссылку на другой столбец из VBA
Новичок в VBA и не могу разобраться как мне переписать вот такую рабочую конструкцию на что-то более лаконичное: Sub GetPrice() ...

Выбрать столбец с условием
Имеются столбцы, около 15 штук, в них находятся 1 и 0. Пример: id|Q|W|E|R|T|Y 1|0|0|0|0|1|0 2|0|1|0|0|0|0 3|0|0|0|1|0|0 ...

20
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
25.01.2016, 14:27
blackeangel, можно просто через впр
=ВПР(A2;[2файл.xlsx]Лист1!$A:$D;4;0)

Добавлено через 9 минут
...не проснулся еще...не полностью прочитал задание
обязательно результат выводить в "итоговый" или можно все загрузить в "первый" файл?
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
25.01.2016, 14:39  [ТС]
eritik, ну вообще то да, в 1й файл. И только это надо макросом написать
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
25.01.2016, 15:33
Visual Basic
1
2
3
4
5
6
Sub an()
Workbooks("2.xlsx").Worksheets(1).Range("A2:a" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Workbooks("1.xlsm").Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
 
Columns("A:A").Select
    ActiveSheet.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes
    End Sub
blackeangel, пока вот собирает из двух книг общий список,а дальше можно сравнить через like или прописать в ячейку фомулу "=впр".. или еще куча вариантов
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
25.01.2016, 15:41  [ТС]
eritik, а как собирает?дублей не будет?
Лайке это хорошо..но, а на 100к он как реагировать будет?
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
25.01.2016, 16:04
Цитата Сообщение от blackeangel Посмотреть сообщение
eritik, а как собирает?дублей не будет?
Visual Basic
1
Workbooks("2.xlsx").Worksheets(1).Range("A2:a" & Cells(Rows.Count, 1).End(xlUp).Row).Copy Workbooks("1.xlsm").Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
,копирует текстс книги два от А2 до последней заполненной строки и вставляет в книгу один в первую пустую ячейку столбца 1
вторая часть кода удаляет дубликаты.

намного проще выполнить задачу,если скопировать лист из книги два в книгу один, такой варинт возможен?
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
25.01.2016, 16:15  [ТС]
eritik, сейчас нашёл ошибку в итоговом файле.Прошу прощения. Выглядеть должно как в приложеном файле.
Копировать ничего не надо.
Ещё раз прошу прощения за ошибочный файл.
Вложения
Тип файла: xlsx Итог.xlsx (9.7 Кб, 2 просмотров)
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
25.01.2016, 18:16  [ТС]
В общем все сводится к тому что: есть список(файл1) и есть база (файл2).Из базы в список копируются необходимые данные, если не совпали,то пропускается(остаётся пустая ячейка)
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
26.01.2016, 10:30
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
   Sub PrikList()
    Dim i As Integer
Dim j As Integer
Dim lLR As Integer
    Workbooks("2.xlsx").Worksheets(1).Copy after:=Workbooks("1.xlsm"). _
    Sheets(1)
   ThisWorkbook.Worksheets(2).Range("A2:a" & Cells(Rows.Count, 1).End(xlUp).Row).Copy ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
Columns("A:A").Select
    ActiveSheet.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes
i = 2
lLR = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(1).Select
    Do While Worksheets(1).Cells(i, 1).Value <> Empty
  For j = 2 To lLR 
 If Worksheets(1).Cells(i, 1).Value Like Worksheets(2).Cells(j, 1).Value Then
    Worksheets(1).Cells(i, 4).Value = Worksheets(2).Cells(j, 4).Value
   End If
  Next j
i = i + 1
  Loop
  Application.DisplayAlerts = False
  Sheets(2).Delete
 Application.DisplayAlerts = True
    End Sub
blackeangel, закинь макрос в первую книгу.
немного не так как ты хотел, но результат должен быть тот же
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.01.2016, 13:33  [ТС]
Ругается 9 ошибкой на
Workbooks("2.xlsx").Worksheets(1).Copy after:=Workbooks("1.xlsm"). _
Sheets(1)

Добавлено через 1 час 41 минуту
Ещё один момент вспомнил: за одним обозначение может быть несколько значений в другом файле..

Добавлено через 51 секунду
Придётся выводить на новый лист...

Добавлено через 4 минуты
Вот кривой макрос, сам накидал
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
27
28
Sub osnastka()
Application.ScreenUpdating = False
i = 2
' работаем с активной книгой
sWhatFind2 = "Обозначение"
Cells.Find(What:=sWhatFind2, After:=ActiveCell, SearchOrder:=xlByColumns).Activate
ncolumn2 = ActiveCell.Column ' нашли столбец с обозначением
Columns(ncolumn2 + 1).Insert 'вставляем столбец справа
Cells(1, ncolumn2 + 1).Value = "Инструм." 'вставляем заголовок столбца
' работаем с "базой"
sWhatFind = "№ детали"
sWhatFind3 = "Инструм."
n = ThisWorkbook.Path & "" & "Оснастка.xlsx"
Set s = GetObject(n)
Set ndetali = s.Worksheets(1).Cells.Find(What:=sWhatFind, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
k = ndetali.Column
Set ninstrum = s.Worksheets(1).Cells.Find(What:=sWhatFind3, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
l = ninstrum.Column
MsgBox "cell= " & Cells(i, k).Value
'цикл
Do While Cells(i, ncolumn2).Value <> Empty 'поставил на "Обозначение" т.к. обрывался на пустой ячейке
If Cells(i, k).Value Like Cells(i, ncolumn2).Value Then
Cells(i, ncolumn2 + 1).Value = s.Worksheets(1).Cells(i.Row, l)
End If
i = i + 1
Loop
s.Close SaveChanges:=False 'закрываем файл без сохранения
End Sub
Не знаю где ошибка
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.01.2016, 13:36  [ТС]
Вот файлы чтобы читалось правильно
Помогите пожалуйста добить
Приветствуется метод через массив.
Вложения
Тип файла: zip пример2.zip (31.8 Кб, 2 просмотров)
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
26.01.2016, 14:25
blackeangel, в итоге то что должно получиться? и какие поля куда подтягивать? и значения в таблицах не уникальны (номера деталей)? подтягивать все значения или первое найденное? если все, то лучше разбить на две процедуры.

тут два решения подтягивания всех найденых значений: макросом и функцией
http://https://www.cyberforum.... 26264.html
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.01.2016, 14:33  [ТС]
eritik, все подтягивать. нет, не уникальны некоторые.То есть есть и уникальные и не уникальные
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
26.01.2016, 14:38
blackeangel, что делать с неуникальными?
какие столбы подтягивать?
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.01.2016, 14:50  [ТС]
eritik, что делать с не уникальными-выделил красным чтоб видно было(размещать друг под другом)
Какие столбцы подтягивать тоже видно из второго листа.
Вложения
Тип файла: xlsx 1.xlsx (23.0 Кб, 2 просмотров)
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
26.01.2016, 15:12
blackeangel, из написанного следует: берем таблицу 1,к ней добавляем табл 2 и фильтурем по имени. вот и все. при этом будет все заполнено, не нужно ничего перебирать и все уникальности сохранятся.
или ко второй таблице добавляем уникальные значения из первой(которых нет в табл 2)
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.01.2016, 15:52  [ТС]
eritik, не то и не то. Именно к первой добавляем столбец "Инструм." в котором будут данные взятые из файла "оснастка" с тем что если "обозначение" и" #детали" равны, то в активный файл копируем содержимое стобца "Инструм." из "оснастка" в активную книгу рядом с совпашим "Обозначением". И так до конца списка в активной книге. Расположение столбцов рандомное в обоих файлах. Если есть повторяющиеся значения то их пишем под первым найденным(как выделено красным было).

Добавлено через 6 минут
Если не совпало "обозначение" и "# детали" то оставляем пустую ячейку в столбце "Инструм."

Добавлено через 7 минут
Вот, поэтому и надо перебрать... Программа должна работать по принципу: взяла номер и гоняет его по столбцу в другом файле,нашла перешла в этой строке в столбец "Инструм.", взяла значение и запульнула его в столбец рядом с текущим значением активного файла и так до конца

Добавлено через 7 минут
Как вариант обхода повторяющихся значение - записывать на новый лист каждый раз
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
26.01.2016, 17:26
Цитата Сообщение от blackeangel Посмотреть сообщение
Программа должна работать по принципу: взяла номер и гоняет его по столбцу в другом файле
- это ведь ужасно долго, особенно на 100к...
На словаре и массивах нужно делать, если не на Маке.
0
 Аватар для blackeangel
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
26.01.2016, 17:43  [ТС]
Hugo121, знаю, но если есть предложения как это сделать, излагайте.Есть вот пример был, только не знаю как его под конкретную задачу реализовать. Вот ссылка на пример на массивах Поиск значения в одном и копирование в другой файл
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
26.01.2016, 17:46
Так предложение я уже изложил.
Если желаете код - работой завален, некогда. Даже поискать по форуму по scripting.dictionary некогда...
Минуту на пост - вот сегодня максимум...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2016, 17:46
Помогаю со студенческими работами здесь

Копирование в соседний столбец с условием
Создать процедуру копирования в соседний столбец (начиная с ячейки В5, без пропусков ячеек) положительных чисел из диапазона А5:А14. Sub...

Копировать столбец в другую таблицу с условием
Здравствуйте. У меня есть 2 таблицы. 1-я содержит столбцы Id Artist Track. 2-я Id Artist Track Artist_id. как мне скопировать из первой...

Динамический отчет, столбец с условием - возможно?
Всем доброго времени суток! Есть уже готовая база - столбцы типа &quot;план&quot;, &quot;факт1&quot;, &quot;менеджер1&quot;, ... , &quot;факт9&quot;,...

Как к питону прикрутить другой браузер
Вот есть питон там можно выбрать браузер browser=webdriver.Firefox() вот так У меня есть браузер сделанный на базе ФФ и мне нужно...

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru