Доброго времени суток, имеется таблица с тремя столбцами. Необходимо ее так отформатировать, чтобы содержимое столбца "Артикул1" четко соответствовало содержимому столбца "Артикул2". Т.е из столбца "Артикул2" удалить те артикулы, которых нет в столбце "Артикул1", а также порядок расположения артикулов в обоих столбцах должен быть одинаков. Я пробовал сделать это через эту формулу =ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(B1;$A$1:$A$10000;0));"Unique";"Duplicate"). А потом применил фильтр, но не получилось. Подскажите, как это можно реализовать.
Judgin написал: из столбца "Артикул2" удалить те артикулы, которых нет в столбце "Артикул1", а также порядок расположения артикулов в обоих столбцах должен быть одинаков
1.Очистить столбец "Артикул2" 2.Скопировать столбец "Артикул1" 3.Вставить скопированное в очищенное
P.S. "Привидение содержания" - это намного круче, чем тень отца Гамлета
Judgin написал: а также порядок расположения артикулов в обоих столбцах должен быть одинаков.
Чтобы это значило с учётом столбца кол-во? Приведите пример.
Пока решение на Power Query для первой процитированной постановки задачи. P. S. Прошу пояснить, как количество может быть 0,5 - это же счётное значение.
Попробую объяснить, зачем мне это все. Мне нужно, скажем 3 раза в неделю скачивать файл с остатками на складе у поставщика и загружать его себе на сайт. С сайта поставщика есть возможность скачать файл с остатками на складе, который генерируется в формате csv. Столбцы Артикул2 и К-во как раз из него. Столбец Артикул1 содержит артикулы из файла который будет загружен в мой интернет магазин. Файл я этот спарсил программой-парсером. И вот мне нужно состыковать эти столбцы, чтобы постоянно обновлять остаток на складе.
Подозреваю, что такой. ТС видимо чтобы жизнь малиной не казалась объединил таблицу артикулов для интернета и таблицу данных поставщика вместе Вместо того чтобы написать - нужно из таблицы данных поставщика отобрать данные по артикулам, которые есть в таблице для интернета. Как-то так можно расшифровать его логику изложения задачи. Но! Могу и ошибаться. Гуманитарии они такие загадочные
Андрей VG, Да, остается только гадать. Но в вашем варианте, навскидку, много двойников. Например "1511111" в исходнике встречается - в столбце "А" 7 раз, а в столбце "В" 8 раз. У вас 56 пар.(7*, у меня 7 пар, а оставить, возможно, нужно только одну пару. . Ладно, давайте отдыхать, пусть ТС разбирается.
Ну, так если есть повторы артикулов и в инет таблице и в таблице поставщика, то и получим декартово произведение. Похоже ТС из тех, что и сам не знает что нужно делать
casag , на самом деле, повторяющиеся артикулы создают ряд проблем. И в таком виде я их на сайт загрузить не могу. Чтобы избавиться от повторяющихся артикулов я думаю воспользоваться kutools. Сгенерировать и добавить к каждому артикулу рандомную цифру. И уже в таком виде загрузить на сайт. Для этого мне необходимо, чтобы в том файле, который я прикрепил к посту, первый столбец был бы как образец. Соответственно второй столбец должен выглядеть как первый. И при этом в третьем столбце ячейки с кол-вом должны относиться к соответствующему артикулу. Если это было бы возможно сделать, то после такого редактирования я бы мог скопировать добавленные, рандомные цифры к артикулам и в таком виде грузить на сайт. Таким образом на сайте и в загружаемом файле артикулы будут одинаковые, но в то же время без дубликатов.
Judgin, я в посте №9 привел три варианта выгрузки данных после обработки, а Андрей VG, постом ниже еще один. Если вас не устраивает ни один из них, то покажите вручную как должен выглядеть файл после обработки.
Sub csg()
Dim lr As Long, i As Long
Dim rFind As Range
Application.ScreenUpdating = False
lr = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lr Step 1
Set rFind = Range("B2", Cells(Rows.Count, 2).End(xlUp)).Find(What:=Cells(i, "A").Text, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not rFind Is Nothing Then
Cells(i, 1).Copy Destination:=Cells(Rows.Count, 5).End(xlUp).Offset(1, 0)
rFind.Copy Destination:=Cells(Rows.Count, 6).End(xlUp).Offset(1, 0)
rFind.Offset(0, 1).Copy Destination:=Cells(Rows.Count, 7).End(xlUp).Offset(1, 0)
rFind = ""
rFind.Offset(0, 1) = ""
Else
Cells(i, 1).Copy Destination:=Cells(Rows.Count, 10).End(xlUp).Offset(1, 0)
End If
Next
Application.ScreenUpdating = True
End Sub
casag, к сожалению нет. Посмотрите в файле, который я скинул сегодня. Значения в обоих столбцах должны быть одинаковы. Когда вы мне скидывали 3 варианта, то во втором и третьем ввариантах такое расположение как требуется. Но очерёдность артикулов в обоих столбцах должна быть как в первом варианте в первом столбце
Андрей VG, да действительно этого значения в исходном файле нет. Так как в нем только часть артикулов. Файл с полным списком артикулов весит больше, чем разрешено прикреплять к посту. Я залью файл на какой-нибудь файл обменник и скину ссылку сюда
Judgin написал: да действительно этого значения в исходном файле нет
То есть нужно было, чтобы прошло трое суток обсуждения, чтобы прийти к пониманию (надеюсь у вас оно наступило), что это не зря пишется в правилах
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Попробуйте всё же составить простой пример из 20-30 (а то и меньше строк на входе) и что действительно должно именно из них, этих строк входа, получиться на выходе. Разве это так сложно?
Андрей VG написал: Попробуйте всё же составить простой пример из 20-30 (а то и меньше строк на входе) и что действительно должно именно из них, этих строк входа, получиться на выходе.
Так я вроде скидывал файл, в котором показал, что должно получится на выходе. Вот он.
Judgin, Вы читаете, то что вам пишут? Вы же даже не пытались проверить макрос из поста №20. Я вам писал
Цитата
casag написал: Загрузите в книгу с макросом полный список и получите другой результат.
Берете файл из поста №20, загружаете туда свой полный список и включаете макрос. Макрос работает долго, но свою работу делает. Для такого большого объема для скорости нужно делать макрос на массивах.