Страницы: 1 2 След.
RSS
Конвертация прайса из 1С в человеческий вид. Не соображу :(
 
Приветстую уважаемых гуру!  
 
Возникла такая проблема, перед которой я бессилен...  
Есть прайс-лист в формате 1С. К самой 1С доступа не имею, прайс дают готовый. Во вложении примерчик этого нечеловеческого прайс-листа. Хочется на выходе получить нормальную табличку...  
 
Сейчас записи отформатированы отступами в форматировании ячейки и это выглядит так:  
Категория товара (нет оступа)  
(один отступ)Группа  
(два отступа)Подгруппа  
(три отступа)Товар;кол-во;цена  
(три отступа)Товар;кол-во;цена  
(три отступа)Товар;кол-во;цена  
 
А хотелось бы на выходе получить такой вид:  
 
Категория товара;Группа;Подгруппа;Товар;кол-во;цена  
Категория товара;Группа;Подгруппа;Товар;кол-во;цена  
Категория товара;Группа;Подгруппа;Товар;кол-во;цена  
 
Что-то я не соображу :( Подскажите пожалуйста - куда копать?
 
В "Приемы" заглядывали? http://www.planetaexcel.ru/tip.php?aid=175 Не то?
 
1. Перестаньте создавать одну и ту же тему :)  
2. Приложите Excel файл (а не картинку). В файле можете заменить всю важную информацию на "бабочки", "цветочки", "яблоки". Много строк не нужно (строк 10-20). Т.е. полностью весь ваш прайс на 5мб нам не нужен  
 
P.S. Когда в следующий раз будете делать снимок активного окна, то нажимайте кнопку ALT вместе с PrintScreen, чтобы вам больше не приходилось обрезать часть картинки
 
{quote}{login=}{date=15.08.2010 04:40}{thema=}{post}1. Перестаньте создавать одну и ту же тему :)  
2. Приложите Excel файл (а не картинку). В файле можете заменить всю важную информацию на "бабочки", "цветочки", "яблоки". Много строк не нужно (строк 10-20). Т.е. полностью весь ваш прайс на 5мб нам не нужен  
 
P.S. Когда в следующий раз будете делать снимок активного окна, то нажимайте кнопку ALT вместе с PrintScreen, чтобы вам больше не приходилось обрезать часть картинки{/post}{/quote}  
 
Простите, инет взглючило. Браузер сказал что не может отправить данные, ну я и сделал "контрольный в голову" :) Файлик сейчас приложу. Для уменьшения места я оставлю несколько групп и товаров. Скриношот я делал с помощью FastStone Image Wiewer. Просто нетбук у меня несколько нестанадартный по разрешению...
 
Вот, записал макрорекордером  
Sub Макрос1()  
      With Columns("B:B")  
       .HorizontalAlignment = xlLeft  
       .Orientation = 0  
       .AddIndent = False  
       .IndentLevel = 0  
       .ShrinkToFit = False  
       .ReadingOrder = xlContext  
   End With  
End Sub  
 
Или вручную: выбеляем стобец 2; правой кнопкой на любой ячейке стобца - формат ячеек - выранивание: по левому краю - отступ - "0"
 
Это не совсем то, что нужно...  
Сейчас формат такой:  
 
Продовольствееные товары  
--Детское питание  
----Каши,супы  
------Каша1  
------Каша2  
------Каша3  
------Каша4  
 
И все это в одной колонке.  
 
А мне на выходе требуется получить такой вид:  
Продовольственные товары;Детское питание;Каши,супы;каша1  
Продовольственные товары;Детское питание;Каши,супы;каша2  
Продовольственные товары;Детское питание;Каши,супы;каша3  
Продовольственные товары;Детское питание;Каши,супы;каша4  
 
Т.е. вытащить из второй колонки все группы, подгруппы, товары и разместить их в отдельных колонках...
 
{quote}{login=ignel}{date=15.08.2010 05:28}{thema=}{post}Это не совсем то, что нужно...  
 
Т.е. вытащить из второй колонки все группы, подгруппы, товары и разместить их в отдельных колонках...{/post}{/quote}В таком случае оставьте несколько строк прайса на одном листе, а на втором покажите, что должно получиться.  
 
26626
 
Добавил в файлик еще одну вкладку. Вкладки называются "Что есть" и "Что требуется". На первой розовым выделен формат, в котором табличка сейчас. На второй, светло-зеленым, - какой нужен...
 
{quote}{login=ignel}{date=15.08.2010 06:00}{thema=}{post}Добавил в файлик еще одну вкладку. Вкладки называются "Что есть" и "Что требуется". На первой розовым выделен формат, в котором табличка сейчас. На второй, светло-зеленым, - какой нужен...{/post}{/quote}  
необходим признак по которому можно определить группу и подгруппу  
в ваших данных таких признаков вроде нет
Спасибо
 
Признаки есть - размер отступа :-)
 
{quote}{login=kim}{date=15.08.2010 07:16}{thema=}{post}Признаки есть - размер отступа :-){/post}{/quote}  
ну да через IndentLevel можно попробовать
Спасибо
 
если никто не поможет в среду сделаю , хотя сложно будет везде уровень вложенности разный  
ориентир для отправки  
Cells(14, 2).IndentLevel)
Спасибо
 
Вот, как вариант  
 
 
 
 
 
86768
 
Странно, у меня Transpose на таких объёмах не срабатывает, уже второй раз сталкиваюсь.  
Удалил всё, что ниже джемов - отработало.
 
{quote}{login=Hugo}{date=16.08.2010 09:42}{thema=}{post}Странно, у меня Transpose на таких объёмах не срабатывает, уже второй раз сталкиваюсь.  
Удалил всё, что ниже джемов - отработало.{/post}{/quote}В моем файле работает? И что такое "джемов"?
 
Да вот именно в Вашем файле и ругалось.  
Джемов - это множественное число от первого слова в строке  
Джем, варенье, мед, сироп, мусс  
:)
 
А-А, в первоначальной таблице... а я их у себя в коде ищу ;-)  
А сколько памяти в компе?  
Вероятно, для слабых компов код нужно переделать.... я как раз об этом думал...  
но будет очень медленно.
 
Памяти гиг, дома два, но и дома глючит (http://www.planetaexcel.ru/forum.php?thread_id=18272)  
Почему такое может быть?
 
Понимаю что мой способ обработки на фоне кодов и макросов будет выглядеть как каменный топор против АК-47 но всеже.  
1) Удаляем строчки в которых в столбце В пусто, при помощи автофильтра.  
2) прогоняем макрос на название жирным шрифтом, в столбце А появятся +(спасибо форуму за идею)  
 
Sub Жирность()  
Dim i As Long  
For i = 1 To 16999  
If Cells(i, 2).Font.Bold = True Then Cells(i, 1) = "+"  
Next  
End Sub  
3) Далее при помощи автофильтра в столбце А выбираем+.  
4) в столбце Е прописываем формулу e9=a9 и протягиваем ее.  
5) ручками выносим разделяем категории и подкатегории по разным столбцам.  
6) А далее фокус. В столбце А выбираем "Пустые".  
В столбце E если мы оставили самые низкие категории типа Каша, Супы....консервы мясорастительные и тп. у нас получится следующая формула: E12=E11 и протягиваем эту формулу до самого низу.  
Тожесамое делаем в соседних столбцах с категориями и подкатегориями.  
7) Столбцы E F G сохраняем как значения.  
8) в столбце А выбираем + при помощи автофильтра и удаляем все строчки.  
9) вуаля все протянуто.  
 
как сделать подобное при помощи макроса не знаю.
 
{quote}{login=Hugo}{date=16.08.2010 10:22}{thema=}{post}Памяти гиг, дома два, но и дома глючит (http://www.planetaexcel.ru/forum.php?thread_id=18272)  
Почему такое может быть?{/post}{/quote}Ну гиг должно хватать. Даже 512 для таких объемов должно хватать...    
 
PS. немного переделал, а то не совсем корректно отрабатывал.
 
Должно, но не работает...  
тут ошибка:  
Range(Cells(1, 1), Cells(k, 7)) = Application.WorksheetFunction.Transpose(Tabl)
 
Сейчас специально проверил - у меня и на 60'000 строчек отрабатывает, чуть менее 10 сек...  
Но у меня 2 гига.
 
{quote}{login=Михаил}{date=16.08.2010 01:41}{thema=}{post}Вот, как вариант  
86768{/post}{/quote}  
Михаил, огромное спасибо! Макрос работает. Единственное, он вывалился в дебаг с ошибкой Run-time error 9: Subscript out of range на вот этой строчке - Sheets("Лист1").Select . Макрос не нашел этого листа, поскольку его не было. Создал лист с этим именем, продолжил конвертацию. Весь полный прайс конвертнулся нормально. Это относится к первому макросу (post_146011.rar), который Вы прикладывали к сообщению. Второй макрос немного не так раскидывает разделы/подразделы. Ну да не суть важно. Первый работает просто отлично!!!  
 
Еще раз спасибо Вам и всем участвующим в обсуждении за оперативность и доброжелательность!  
 
С уважением - Игорь.
 
Может версия офиса? Сейчас и дома на 2000 запускал, вечером на 2003 проверю.
 
{quote}{login=Hugo}{date=16.08.2010 12:27}{thema=}{post}Может версия офиса? Сейчас и дома на 2000 запускал, вечером на 2003 проверю.{/post}{/quote}Мы с вами чем-то схожи... я использую 2010, вы 2000; зато я езжу на "горбатом" Запорожце, а Вы?  
:-)
 
Ну моя машина стоит 3 зарплаты. Это если с этих зарплат ничего на жизнь не тратить... не платить кредиты... за квартиру... кушать кашки/макароны...
 
{quote}{login=Hugo}{date=16.08.2010 12:54}{thema=}{post}Ну моя машина стоит 3 зарплаты.{/post}{/quote}  
Машина = комп или Машина = автомобиль? :-)
 
Ну компы как всегда - стоят 1000$. Хотя мой столько стоил лет 5 назад. Наверное... - я его б/у купил, недавно, дёшево - мой прежний просто умер от старости :(
 
{quote}{login=Hugo}{date=16.08.2010 11:46}{thema=}{post}  
тут ошибка:  
Range(Cells(1, 1), Cells(k, 7)) = Application.WorksheetFunction.Transpose(Tabl){/post}{/quote}Где-то я видел такую конструкцию:  
 
Set MyRange = Range(Cells(1, 1), Cells(k, 7))  
MyRange= Application.WorksheetFunction.Transpose(Tabl)  
 
не знаю, что это дает, но попробовать можно...
 
Попробовал - не пошло. Та же ошибка - несоответствие типов.
Страницы: 1 2 След.
Читают тему
Наверх