С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8

Необходимо сравнить ячейки столбцов в разных файлах и при совпадении заменить значение

18.03.2015, 12:49. Показов 4156. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сама задача.
Есть два файла, "Заказы" и "Услуги Диагностика". Необходимо сравнить столбец "Специальность" из файла "заказы" со столбцом А из файла "услуги". При совпадении необходимо заменить значение в столбце "Тип заявки" файла "заказы", на значение "Диагностика".
Если вам будет удобно, то можно перенести услуги в один файл с заказами.
Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2015, 12:49
Ответы с готовыми решениями:

Формула для заполнения ячейки при совпадении значений из разных колонок и листов
исходные данные: 2 таблицы. в обеих данные о поступивших суммах с разным комментариями. Необходимо из одной табл внести...

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

Сравнить значения ячеек в разных файлах
добрый день! задача такая: есть табличка. все значения в ней вводятся вручную каждую неделю создаю такой же файл и заполняю. нужно...

35
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
18.03.2015, 12:53
еще один без файлов..
Файлы-то где ? Самим создавать? Никто не будет ...
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
18.03.2015, 12:54
Есть готовый макрос на эту работу, но платный. Если Вам будет удобно.
0
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8
18.03.2015, 13:04  [ТС]
Бррр, я загружал, сорри!!! Сейчас повторю.
Вложения
Тип файла: xlsx заказы.xlsx (19.8 Кб, 11 просмотров)
Тип файла: xlsx Услуги Даигностика.xlsx (11.8 Кб, 11 просмотров)
0
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8
18.03.2015, 18:08  [ТС]
Up!
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
18.03.2015, 22:24
Посмотрите, так подойдет?
Замена происходит при полном совпадении, за исключением - не учитывается регистр. Программа изменяет файл "заказы", но создает его копию, на всякий случай.
Вложения
Тип файла: rar 11.rar (37.8 Кб, 18 просмотров)
2
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
18.03.2015, 22:35
Кстати, обратите внимание - второй файл называется Услуги Даигностика.xlsx
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
18.03.2015, 22:40
Опоздал немного, но уж тоже выложу Запуск сверки кнопкой или через Макросы.
Вложения
Тип файла: rar заказы1.rar (34.6 Кб, 18 просмотров)
2
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8
19.03.2015, 13:12  [ТС]
Ребята, огромное спасибо, не знаю, что бы я без вас делал! SoftIce, Подскажите пожалуйста, как мне поправить код. Я полный профан в VBA , но с вашей помощью пытаюсь чему-то научиться . Мне нужно увеличить диапазон сверки ячеек.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
19.03.2015, 13:27
Лучший ответ Сообщение было отмечено Sheeplove как решение

Решение

У меня программа. Чтобы поправить нужно иметь установленную среду разработки. Поэтому возьму на себя смелость прокомментировать код уважаемого chumich (надеюсь, он не будет против)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub toto()
   Set oWbk = Workbooks.Open("C:\Users\пк\Downloads\Услуги_Диагностика.xlsx") ' открываем книгу Услуги_Диагностика.xlsx
   LastRow = ThisWorkbook.ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row 'номер последней строки  в текущем файле
   LastRow1 = oWbk.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'номер последней строки в файле Услуги_Диагностика.xlsx
   For i = 1 To LastRow ' цикл с первой строки до последней строки текущей книги
      For j = 1 To LastRow1 'цикл с первой строки до последней строки  книги Услуги_Диагностика.xlsx
          'Если значение ячейки в 6-м столбце книги равно значению ячейки  в 1-м столбце активного листа книги Услуги_Диагностика.xlsx, то
          If ThisWorkbook.ActiveSheet.Cells(i, 6) = oWbk.ActiveSheet.Cells(j, 1) Then
              ' Записываем в i-тую ячейку 4-го столбца текущей книги слово  "Диагностика"
              ThisWorkbook.ActiveSheet.Cells(i, 4) = "Диагностика"
          End If
      Next j
    Next i
End Sub
2
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
19.03.2015, 14:46
Цитата Сообщение от Sheeplove Посмотреть сообщение
Мне нужно увеличить диапазон сверки ячеек.
На всякий случай добавлю "прямым текстом", хотя из комментария уважаемого SoftIce это и так должно быть понятно: код работает с любым количеством строк.
1
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8
19.03.2015, 16:32  [ТС]
Это великолепно! Все получилось, огромное спасибо!))) Конечно тот макрос, который в виде программы, был очень удобный, но за то открытый код можно править!)) В общем помогли вы мне, век вас помнить буду)))

Добавлено через 2 минуты
Есть правда еще один вопрос, а можно ли сделать в этом коде такую поправку, что бы он срабатывал в любом каталоге где есть файлы Заказы и Услуги_диагностика?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
19.03.2015, 17:43
Цитата Сообщение от Sheeplove Посмотреть сообщение
можно ли сделать в этом коде такую поправку,
Можно

Добавлено через 38 минут
То есть вы хотите, чтобы из одного постоянного файла можно было открыть в любом каталоге файл "Заказы" и "файл "Услуги_диагностика" и чтобы код работал? И сразу скажите: в этих файлах столбцы будут также расположены?
1
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8
19.03.2015, 18:25  [ТС]
Да, что-то вроде. То есть макросом буду пользоваться не только я, соответственно если я скину его кому-то, он не будет работать в первозданном виде, ему надо будет переписать путь. А мне бы хотелось, если это возможно, что бы макрос отрабатывал в независимости от того в каком каталоге лежат файлы "заказы" и "услуги_диагностика". То есть, лежат, например, эти файлы в корне D:/, я положил туда файл с макросом, запустил, а он возьми и сработай))) И в файле заказы все нужные значения поменялись.

И да, файл заказов всегда будет иметь, несколько отличный от первого варианта, вид. Смотрите во вложении.
Вложения
Тип файла: xlsx Услуги_Диагностика.xlsx (12.9 Кб, 6 просмотров)
Тип файла: xlsx заказы.xlsx (74.3 Кб, 7 просмотров)
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
19.03.2015, 20:44
Лучший ответ Сообщение было отмечено Sheeplove как решение

Решение

Держите. В InputBox вводятся полные пути к файлам. Проверил. Работает.
Вложения
Тип файла: rar заказыМакрос.rar (74.2 Кб, 16 просмотров)
1
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 8
20.03.2015, 11:12  [ТС]
chumich, Огромное спасибо! это именно то, что было надо! Лучше не придумать!!! Если честно, то сколько я не обращался на форумы по какой-либо проблеме, это был первый раз, когда мне реально помогли! Спасибо вам огромное!!!
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
20.03.2015, 11:36
Есть недоработки в заказыМакрос.rar - вместо импутбоксов нужно бы поставить диалог выбора файлов.
Но есть место чреватое ошибками - Rows.Count будет браться от oWbOrd, и там уж как повезёт в сочетании oWbOrd/oWbServ... Хорошо если оба файла будут с равным количеством строк.
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
20.03.2015, 12:06
Цитата Сообщение от Hugo121 Посмотреть сообщение
вместо импутбоксов нужно бы поставить диалог выбора файлов
Согласен, можно
Цитата Сообщение от Hugo121 Посмотреть сообщение
и там уж как повезёт в сочетании oWbOrd/oWbServ... Хорошо если оба файла будут с равным количеством строк.
Не согласен, они не зависят друг от друга
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
20.03.2015, 12:14
Ну конечно не зависят, поэтому и может быть или ошибка, или неправильная работа кода - ведь Rows.Count может возвратить непредсказуемое значение (вернее одно из непредсказуемых двух).
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
20.03.2015, 12:35
Цитата Сообщение от Hugo121 Посмотреть сообщение
ведь Rows.Count может возвратить непредсказуемое значение
Например? Он считает количество строк в столбце, в котором будет работать цикл. Другой считает в другом столбце,где будет работать другой цикл. Какие могут выдаваться непредсказуемые значения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2015, 12:35
Помогаю со студенческими работами здесь

StringGrid Сравнить строки и скопировать при совпадении
Добрый день! Есть 2 StringGrid'a, в SG1 во второй колонке число и текст примерно так: "№1234567 жили были и тд.". В SG2 в первой...

Сравнение двух столбцов в разных файлах
добрый день есть два файла экселя каждый из 5 столбцов Наименование столбцов одинаковые но соответственно данные разные Количество...

Сравнить столбцы и записать уникальные значения при совпадении
Здравствуйте. Помогите пожалуйста. Необходимо, сравнить данные из столбца 1 со столбцом 6. Если значения совпадают, то в столбец 3...

Сравнить даты в поле с текущей датой, и выполнить при совпадении перерасчет
Здравствуйте.В БД имеется текстовое поле, в котором, через запятую перечислены даты. Необходимо сравнить даты в поле с текущей датой, и...

Выбор значения ячейки при совпадении нескольких условий
Есть программа, поддерживающая импорт\экспорт данных. Данные следующего вида: ID работы | наименование работы | координаты начала |...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru