Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Сравнение двух листов (макрос)
 
Мотя, спасибо!
Изменено: tosick - 16.02.2017 23:17:09
Сравнение двух листов (макрос)
 
Извините, в тексте задачи не написал, в названии имеется - необходим макрос
Upd
Сравнение по артикулу
Изменено: tosick - 16.02.2017 19:09:16
Сравнение двух листов (макрос)
 
Добрый вечер. Помогите пожалуйста кто чем может.
Имеется книга с двумя листами "Каталог" и "Прайс". Необходимо сравнить данные листов по артикулу и на листе "Каталог" выделить артикулы, которых нет на листе "Прайс", а на листе Прайс наоборот - которых нет в каталоге.
Пример прикрепляю.
Макрос по замене данных в ячейках на данные из другого листа
 
Цитата
Hugo пишет: У Вас там беда с пробелами
Цитата
Юрий М пишет: В последнем файле встаньте на ячейку I13, нажмите F2 и посмотрите, где находится курсор. Понятно о чём я? У Вас там в конце ПРОБЕЛ.
Действительно! А я пустая голова на форматирование грешил!
Цитата
Юрий М пишет: Set Rng = Sheets( "Tip" ).Columns(1).Find(what:=Trim(.Cells(i, 9)), LookIn:=xlValues, lookAt:=xlWhole)
Помогло!
Цитата
Hugo пишет: Кстати, в моей версии "если в одной графе будет присутствовать код и 00 и 000, то это НЕ вызовет разногласия. "
Я имел ввиду, что конфликт появится после преобразования в настоящие числа, то есть 00=0 и 000=0. Но с последними изменениями в преобразовании нет необходимости. Вариант Юрий М, возьму для рабочего файла, а вариант Hugo, в копилку ценных идей! На очереди написание общего макроса на все операции.

Юрий М, Hugo, спасибо за помощь! Жаль, что на форуме не предусмотрены + к репутации или что то в этом плане.
Макрос по замене данных в ячейках на данные из другого листа
 
Цитата
Hugo пишет: Я пас - не могу открыть этот xlsm.
В смысле? Файл поврежден? Пересохранил в xls
Макрос по замене данных в ячейках на данные из другого листа
 
Hugo, вот я и говорю, с форматами неразбериха
Юрий М , это я пробовал почти сразу, не помогло. Помогло ручное преобразование данных в необходимых графах листа назначения и листа с расшифровкой с помощью PLEX'а ("Преобразовать числа выглядящие как текст в настоящие числа"  ;)  . Однако это привело к тому, что 00=0, 01=1, 000=0, 001=1 и т.д. В принципе в данном примере это не существенно. Но если в одной графе будет присутствовать код и 00 и  000, то это вызовет разногласия.
Цитата
Юрий М пишет: Но лучше бы на небольшом примере посмотреть.
Выкладываю пример рабочего файла, личную информацию заменил
Макрос по замене данных в ячейках на данные из другого листа
 
Если А1 не одинока, то аналогичная ошибка в строке
Код
a = sh.[a1].CurrentRegion.Value
 
Upd:
Аналогичная ошибка, однако макрос срабатывает и производит замену
Изменено: tosick - 29.10.2014 17:17:35
Макрос по замене данных в ячейках на данные из другого листа
 
Hugo, предложенный Вами вариант работает на выложенном примере, однако при переносе его на рабочую таблицу, получаю ошибку 13 - тип данных (строка a = Sheets("Tip"  ;)  .[a1].CurrentRegion.Value). Вероятно это связано с "подхимичиванием" формата столбца? Пробовал менять форматирование ячеек вручную, не помогает. Я не силен в программировании на VBA, но с вариантом предложенным Юрий М,показалось проще.
Пример данных 9-ой графы: от 00 до 35
Пример данных 12-ой графы: от 000 до 950

Upd:
Макрос Юрий М работает на всех графах, неразбериха в форматировании ячеек. Исходная таблица поступает ко мне в готовом виде. После ручного ввода значений в ячейки граф 9 и 12 макрос заработал. Необходимо "подхимичивание" формата  :)  Ручное изменение формата на числовой или текстовый ничего не дает.
Изменено: tosick - 29.10.2014 16:27:42
Макрос по замене данных в ячейках на данные из другого листа
 
Решил работать с макросом, предложенным Юрий М,
Сначала делаю по проще:
1. Создал 4 листа для подстановки (то есть с расшифровкой полей).
2. В исходной таблице меняю графы 2, 4, 9 и 12 (к каждой графе соответствующий лист с расшифровкой и свой макрос).
Результат: Графы 2 и 4 работают без проблем, а вот графы 9 и 12 ни в какую.
Вот например макрос для 9-ой графы (лист с расшифровкой "Tip", проверка начинается с 7-ой строки исходной таблицы):
Код
Sub Tip()
Dim Rng As Range, n As Integer, i As Long, LastRow As Long
    For n = 1 To Sheets.Count - 1
     With Sheets(n)
      LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
      For i = 7 To LastRow
          Set Rng = Sheets("Tip").Columns(1).Find(what:=.Cells(i, 9), LookIn:=xlValues, lookAt:=xlWhole)
          If Not Rng Is Nothing Then
           .Cells(i, 9) = Rng.Offset(0, 1)
          End If
      Next
     End With
    Next
End Sub
 
Не подскажите в какую сторону смотреть?
Тип данных в графах исходной таблицы 2, 4, 9 и 12 одинаковый: цифры типа 000, 001, 123, 12548, 00125 (форматирование ячеек - текст, чтобы сохранить нули вначале). Ошибок макрос не выдает.
Макрос по замене данных в ячейках на данные из другого листа
 
Hugo, Юрий М, Спасибо!
На примере работают оба варианта, завтра буду пробовать переносить на рабочий файл.
Изменено: tosick - 29.10.2014 01:05:40
Макрос по замене данных в ячейках на данные из другого листа
 
Приветствую пользователей данного форума.
Столкнулся с проблемой и прошу Вашей помощи, чтобы ее побороть. Использую MS Office 2013 (рус).
Имеется excel файл с несколькими листами:
листы №1...n содержат одинаковые по структуре таблицы с содержанием необходимых сведений, некоторые из которых подлежат замене по шаблону

лист №n+1 содержит данные для замены

Необходимо на листах №1...n произвести замену кода в поле "Наименование" на его расшифровку, которая берется из листа №n+1, причем при отсутствии кода в расшифровке, исходная ячейка должна остаться без изменений.

В результате поиска по данному форуму частично решил свою проблему, путем использования следующего макроса:
Код
Sub Zamena()
Dim b
For Each b In [b2:b88]
b.Value = Evaluate("VLookup(" & b.Adress & ",'ForReplace'!A2:'ForReplace'!B5,2,0)")
Next
End Sub 
Однако остались следующие проблемные вопросы:
1. Как оставить код, которого нет в расшифровке нетронутым? После работы данного макроса, в случае отсутствия расшифровки кода получаем результат #Н/Д. Пытался решить проблему с использованием IFERROR, однако попытка не увенчалась успехом.
2. В макросе для примера указан массив b2:b88, и после его работы в графе "B" после 7-ой строки по 88-ую получаем #Н/Д, а хотелось бы видеть там пустые ячейки, так как макрос универсальный и на одних листах 5 записей, а на других 88.
3. Как заставить макрос после его запуска сработать сразу на всех листах №1...n, за исключением листа №n+1 (в данном случае листа ForReplace)?

Пример с данным макросом прикрепляю.

Если данный пример уже обсуждался, прошу не пинать, заранее извиняюсь.
Страницы: 1
Наверх