Страницы: 1
RSS
Сортировка по столбцам по тексту
 
Друзья, всем привет!  
Нужна Ваша помощь) Есть список товаров с ценами, их надо автоматически рассортировать на 3 группы взависимости от названия. Причем, в один стоблец должны допустим попадать названия со словом, к примеру , "печенье", а во второй, где содержится 2 слова - и "печенье", и "кг"  
Товары по категориям выделила соответсвтующими цветами в экселе.  
Возможно ли такое вообще автоматизировать в принципе???
 
Там где есть "кг" можно загнать в отдельную таблицу. А для того чтобы остальные разнести нужно либо справочники создавать либо добавлять уникальный признак для каждой категории.
 
Йогурт со сметаной не попадут.. Нужен список соответствия "Молочным продуктам" создать.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=01.07.2011 10:01}{thema=}{post}Йогурт со сметаной не попадут.. Нужен список соответствия "Молочным продуктам" создать.{/post}{/quote}  
 
Нужно вот так. В молочку должны попадать все названия со словом молоко, сметана, йогурт. Во вторую - крекер, печенье, рулет. В третью - со словом "кг", несмотря на то, что там будут слова крекер и печенье.
 
А куда будут попадать ряженка и вафли?
 
{quote}{login=RAN}{date=01.07.2011 10:15}{thema=}{post}А куда будут попадать ряженка и вафли?{/post}{/quote}  
 
таких нету))))) ну если что, я ж могу потом в макрос дописать пару признаков, если будут еще товары?
 
{quote}{login=Andych}{date=01.07.2011 09:55}{thema=}{post}Там где есть "кг" можно загнать в отдельную таблицу. А для того чтобы остальные разнести нужно либо справочники создавать либо добавлять уникальный признак для каждой категории.{/post}{/quote}  
 
Как их создавать??
 
Люди, ну пожалуйста, помогите!!! у меня ассортимент 1000 позиций...пожалуйста(( ну не умею писать макросы(((
 
Как вариант с доп.столбцом!  
Подождем красивого решения :)
 
Машака,  
Все люди заняты, работают, тем более пятница!!! Как будет время, надейтесь и Вам помогут!!! Терпение!!!
 
{quote}{login=Sergio76}{date=01.07.2011 10:41}{thema=}{post}Машака,  
Все люди заняты, работают, тем более пятница!!! Как будет время, надейтесь и Вам помогут!!! Терпение!!!{/post}{/quote}  
 
Хорошо, просто босс ждет от меня отчет)
 
А мой вариант с допом, не подходит в принципе?!
 
{quote}{login=Sergio76}{date=01.07.2011 10:45}{thema=}{post}А мой вариант с допом, не подходит в принципе?!{/post}{/quote}  
 
К сожалению, у меня в моем прайсе нет никаких признаков категорий товаров...опираться нужно исключительно на одно из слов в названии........ А если я буду в ручную эти категории подписывать, это все равно что в ручную их рассортировать((( Причем клиентов много, у всех свои прайсы, названия товаров разные...поэтому приходиться использовать только ключевые слова.  
Но вам все равно спасибо большое за старание и помощь =)
 
Тогда подскажите, а сколько у Вас в прайсе таких названий (к примеру: Молоко, Йогурт, Сметана и т. д.) их 20 или 1000?. Возможно проще один раз потратить 20-30 минут на составление "словаря", а потом на основании его уже автоматизировать по признаку принадлежности к категории!
 
{quote}{login=Sergio76}{date=01.07.2011 10:56}{thema=}{post}Тогда подскажите, а сколько у Вас в прайсе таких названий (к примеру: Молоко, Йогурт, Сметана и т. д.) их 20 или 1000?. Возможно проще один раз потратить 20-30 минут на составление "словаря", а потом на основании его уже автоматизировать по признаку принадлежности к категории!{/post}{/quote}  
 
Да, их около тысячи...Но это словарь не пригодиться больше после этой рассортировки...в другой раз будет нужен уже другой словарь....Поэтому тут тока макрос может помочь..чтоб по необходимости менять в нем ключевые слова...Если такое в принципе возможно написать..Если нет, то скажите сразу, чтоб я не ждала, я начну в ручную раскидывать...
 
Попробуйте так  
Sub dd()  
   Dim arr, i As Long, sMol As String, sPech As String, tmp, j As Long  
   arr = [a2:c15].Value
   sMol = "молоко,йогурт,сметана"  
   sPech = "печ,крекер,рулет"  
For i = 1 To UBound(arr)  
       tmp = Split(sMol, ",")  
       For j = 0 To UBound(tmp)  
           If InStr(UCase(arr(i, 1)), UCase(tmp(j))) > 0 Then  
               Range("d" & Cells(Rows.Count, 4).End(xlUp).Row + 1) = arr(i, 1)  
               Range("e" & Cells(Rows.Count, 5).End(xlUp).Row + 1) = arr(i, 2)  
               arr(i, 3) = 1  
           End If  
       Next  
       tmp = Split(sPech, ",")  
       For j = 0 To UBound(tmp)  
       If InStr(UCase(arr(i, 1)), UCase(tmp(j))) > 0 Then  
           If InStr(UCase(arr(i, 1)), "КГ") > 0 Then  
               Range("h" & Cells(Rows.Count, 8).End(xlUp).Row + 1) = arr(i, 1)  
               Range("i" & Cells(Rows.Count, 9).End(xlUp).Row + 1) = arr(i, 2)  
               arr(i, 3) = 1  
           Else  
               Range("f" & Cells(Rows.Count, 6).End(xlUp).Row + 1) = arr(i, 1)  
               Range("g" & Cells(Rows.Count, 7).End(xlUp).Row + 1) = arr(i, 2)  
               arr(i, 3) = 1  
           End If  
       End If  
       Next  
       If arr(i, 3) <> 1 Then  
        Range("j" & Cells(Rows.Count, 10).End(xlUp).Row + 1) = arr(i, 1)  
       Range("k" & Cells(Rows.Count, 11).End(xlUp).Row + 1) = arr(i, 2)  
   End If  
   Next  
     
End Sub
 
Или как вариант для сортировки в ячейку "А2" вставить такую формулу  
=ЕСЛИ(ИЛИ(ЛЕВСИМВ(B2;2)={"Йо";"См";"Мо"});$E$1;ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;2)="кг");$I$1;$G$1))
 
{quote}{login=sva}{date=01.07.2011 11:17}{thema=}{post}Попробуйте так  
Sub dd()  
   Dim arr, i As Long, sMol As String, sPech As String, tmp, j As Long  
   arr = [a2:c15].Value
   sMol = "молоко,йогурт,сметана"  
   sPech = "печ,крекер,рулет"  
For i = 1 To UBound(arr)  
       tmp = Split(sMol, ",")  
       For j = 0 To UBound(tmp)  
           If InStr(UCase(arr(i, 1)), UCase(tmp(j))) > 0 Then  
               Range("d" & Cells(Rows.Count, 4).End(xlUp).Row + 1) = arr(i, 1)  
               Range("e" & Cells(Rows.Count, 5).End(xlUp).Row + 1) = arr(i, 2)  
               arr(i, 3) = 1  
           End If  
       Next  
       tmp = Split(sPech, ",")  
       For j = 0 To UBound(tmp)  
       If InStr(UCase(arr(i, 1)), UCase(tmp(j))) > 0 Then  
           If InStr(UCase(arr(i, 1)), "КГ") > 0 Then  
               Range("h" & Cells(Rows.Count, 8).End(xlUp).Row + 1) = arr(i, 1)  
               Range("i" & Cells(Rows.Count, 9).End(xlUp).Row + 1) = arr(i, 2)  
               arr(i, 3) = 1  
           Else  
               Range("f" & Cells(Rows.Count, 6).End(xlUp).Row + 1) = arr(i, 1)  
               Range("g" & Cells(Rows.Count, 7).End(xlUp).Row + 1) = arr(i, 2)  
               arr(i, 3) = 1  
           End If  
       End If  
       Next  
       If arr(i, 3) <> 1 Then  
        Range("j" & Cells(Rows.Count, 10).End(xlUp).Row + 1) = arr(i, 1)  
       Range("k" & Cells(Rows.Count, 11).End(xlUp).Row + 1) = arr(i, 2)  
   End If  
   Next  
     
End Sub{/post}{/quote}  
 
Вау, вау, вау!!! Вы гений!!! На моем примере все получилось, щас попробую под реальный прайс подредактировать, если не получиться, придется еще вас потревожить)
 
{quote}{login=Sergio76}{date=01.07.2011 11:23}{thema=}{post}Или как вариант для сортировки в ячейку "А2" вставить такую формулу  
=ЕСЛИ(ИЛИ(ЛЕВСИМВ(B2;2)={"Йо";"См";"Мо"});$E$1;ЕСЛИ(ИЛИ(ПРАВСИМВ(B2;2)="кг");$I$1;$G$1)){/post}{/quote}  
 
Сейчас попробую  Ваш вариант)
Страницы: 1
Наверх