Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2013, 11:52   #1
ViZ0R
 
Регистрация: 24.11.2011
Сообщений: 5
Лампочка Большая, составная (страшная) функция...

На учёбе дали довольно интересное ТЗ...
Есть БД (не пугайтесь, в Excel'e) на 9к строк. В 1-м из столбцов артикул товара.
Проблема в том что во многих строках несколько артикулов через символ ";" (не спрашивайте, я сам не знаю почему оО).
Суть ТЗ:
Если в артикуле есть ";" (т.е. выглядит примерно так:"abd-hg-63;65adf7;45-37cf+45f"), то нужно для артикула, стоящего после ";" :
1) создать ячейку,
2) записать в неё артикул, стоящий после ";",
3) удалить из 1-й ячейки ";" (Можно переместить символ во 2-ю и удалить его там. Не знаю, как лучше...),
4) Если во 2-й ячейке остался символ ";" (в 1-й ячейке было 3+ артикулов), соответственно проделать операцию заново пока в 1-м столбце не будет по 1-му артикулу.

Соль: Если уже есть Пустой(свободный) столбец, артикул следует записать в него, а не создавать новый. В противном случае получится овер 9к строк, что само собой не желательно (мягко говоря).

Я в Excel дуб дубом, не могу даже найти ф-цию переноса из 1-й строки в другую... (да да - нефиг было пары прогуливать...) Помогите, пожалуйста хотя бы частично составить формулу)

Как я это вижу: Если в R1C1 есть ; то проверить наличие пустой ячейки справа, если нет, создать, переместить в след. ячейку символы от ;(включительно), удалить 1-й символ. и зациклить...

Последний раз редактировалось ViZ0R; 14.04.2013 в 12:11.
ViZ0R вне форума Ответить с цитированием
Старый 14.04.2013, 12:40   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Не понял, что вам надо, — но попробуйте так:

1) выделяем столбец с артикулами
2) на вкладке «Данные» жмём «Текст по столбцам»
3) указываем тип данных - «с разделителями», задаём разделитель «точка с запятой»,
и получаем артикулы, разнесенные по столбцам

не это ли вам нужно было?
EducatedFool вне форума Ответить с цитированием
Старый 14.04.2013, 12:57   #3
ViZ0R
 
Регистрация: 24.11.2011
Сообщений: 5
По умолчанию

EducatedFool
В принципе то, что нужно за исключение 1-го НО: Все столбцы справа заменяются.
А столбец с артикулами стоит в центре (т.е. справа есть другие столбцы с не менее нужными данными). Можно, конечно перенести нужный нам столбец в крайнее правое положение таблицы, но это несёт за собой определённые неудобства.
К тому же возникает путаница с форматами текста (например есть артикул 03.01, а из него делают дату. При попытке изменения в текст выдаёт непонятное число (41277)).
Благодарю за ответ.

Последний раз редактировалось ViZ0R; 14.04.2013 в 13:58.
ViZ0R вне форума Ответить с цитированием
Старый 14.04.2013, 14:29   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ну только из сказанного я могу предположить, что это файл.csv, который открыт в Экселе без разбивки по столбцам. Такой файл открываем как внешние данные, из текста, разбиваем в мастере по столбцам.
Не хотите показать этот файл в исходном виде (НЕ СОХРАНЯЯ в Экселе)?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.04.2013, 15:13   #5
ViZ0R
 
Регистрация: 24.11.2011
Сообщений: 5
По умолчанию

Hugo121
Никаких файлов csv у меня нету)
Только БД в в xls(Excele'e). Собственно то, что мне выдали.
Хотя, возможно я вас неправильно понял...
ViZ0R вне форума Ответить с цитированием
Старый 14.04.2013, 19:20   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Хотя перечитал ещё раз - вероятно всёж не csv, раз уж другие столбцы есть.
Тогда думаю макросом можно так сделать - сперва пройтись по столбцу и определить максимум разделителей в строке, добавить сколько нужно столбцов, «Текст по столбцам».
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.04.2013, 22:10   #7
ViZ0R
 
Регистрация: 24.11.2011
Сообщений: 5
По умолчанию

Hugo121
Тем же макаром можно перетащить нужный нам столбец в крайнее правое положение, далее исполнить предложение EducatedFool, а потом вернуть лёгким движением руки с зажатой левой кнопкой мыши расставить столбцы в нужном нам порядке.
Что я и сделал.
Собственно вопрос закрыт, всем большое спасибо за помощь!
ViZ0R вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень страшная задача! Не_шарю_в_делфи Помощь студентам 1 12.07.2011 23:15
Страшная ошибка "состояние E_FAIL" $T@LKER БД в Delphi 0 06.11.2010 00:33
Страшная ошибка при создании процесса nazavrik Общие вопросы C/C++ 3 03.10.2009 01:17
Составная форма Skolot Microsoft Office Access 0 30.04.2009 12:54
Составная форма с иерархической системой ниспадающих списков lastochka Microsoft Office Access 8 22.12.2008 14:51