Добрый вечер. Помогите пожалуйста кто чем может. Имеется книга с двумя листами "Каталог" и "Прайс". Необходимо сравнить данные листов по артикулу и на листе "Каталог" выделить артикулы, которых нет на листе "Прайс", а на листе Прайс наоборот - которых нет в каталоге. Пример прикрепляю.
Юрий М пишет: В последнем файле встаньте на ячейку 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, вот я и говорю, с форматами неразбериха Юрий М , это я пробовал почти сразу, не помогло. Помогло ручное преобразование данных в необходимых графах листа назначения и листа с расшифровкой с помощью PLEX'а ("Преобразовать числа выглядящие как текст в настоящие числа" . Однако это привело к тому, что 00=0, 01=1, 000=0, 001=1 и т.д. В принципе в данном примере это не существенно. Но если в одной графе будет присутствовать код и 00 и 000, то это вызовет разногласия.
Цитата
Юрий М пишет: Но лучше бы на небольшом примере посмотреть.
Выкладываю пример рабочего файла, личную информацию заменил
Hugo, предложенный Вами вариант работает на выложенном примере, однако при переносе его на рабочую таблицу, получаю ошибку 13 - тип данных (строка a = Sheets("Tip" .[a1].CurrentRegion.Value). Вероятно это связано с "подхимичиванием" формата столбца? Пробовал менять форматирование ячеек вручную, не помогает. Я не силен в программировании на VBA, но с вариантом предложенным Юрий М,показалось проще. Пример данных 9-ой графы: от 00 до 35 Пример данных 12-ой графы: от 000 до 950
Upd: Макрос Юрий М работает на всех графах, неразбериха в форматировании ячеек. Исходная таблица поступает ко мне в готовом виде. После ручного ввода значений в ячейки граф 9 и 12 макрос заработал. Необходимо "подхимичивание" формата Ручное изменение формата на числовой или текстовый ничего не дает.
Решил работать с макросом, предложенным Юрий М, Сначала делаю по проще: 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 (форматирование ячеек - текст, чтобы сохранить нули вначале). Ошибок макрос не выдает.
Приветствую пользователей данного форума. Столкнулся с проблемой и прошу Вашей помощи, чтобы ее побороть. Использую 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)?
Пример с данным макросом прикрепляю.
Если данный пример уже обсуждался, прошу не пинать, заранее извиняюсь.