Страницы: 1
RSS
Скопировать строку в соответствующую группу ориентируясь по цвету
 
Добрый день!
Имеются две таблицы с "Исходными данными" и "Рабочими". Отличие заключается в том что в исходной таблице имеются строки с голубым текстом (имеется ввиду цвет шрифта), а в рабочей таких строк нет.
Необходимо добавить в рабочую таблицу все голубые строки по группам (для большей наглядности выделил группы желтым цветом)
Группа важный критерий, каждая голубая строка должна быть строго в своей группе в которой была изначально.
Рассматривал вариант с формулами, но к сожалению решения найти не удалось, файл пример прилагается.
 
Могли бы подсказать хотя-бы  как скопировать данные из первого листа, и вставить во второй в определенную группу
Список групп
"1.", "1.1.", "1.1.1.", "1.1.2.", "1.2.", "1.2.1.", "1.2.2.", "1.2.2.1.", "1.2.2.2.", "1.2.2.3.", "1.2.3.", "1.2.3.1.", "1.2.3.1.0.", "1.2.3.1.1.", "1.2.3.1.2.", "1.2.3.1.2.1.", "1.2.3.1.2.2.", "1.2.3.2.", "1.2.3.2.1.", "1.2.3.2.2.", "1.2.3.2.2.1.", "1.2.3.2.3.", "1.2.3.2.4.", "1.2.3.2.4.1.", "1.2.3.2.5.", "1.2.4.", "1.2.4.1.", "1.2.4.2.", "1.2.5.", "1.2.5.1.", "1.2.5.1.1.", "1.2.5.2.", "1.2.5.3.", "1.2.6."
 
А можете описать ваше видение, как должно все происходить, т.е. основываясь на какой логике одни данные должны быть внесены в таблицу с другими?
Интересно почитать ваше видение.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, Да конечно. По моему предположению идем следующими шагами:
1) Работаем с листом "Исходные данные" идем по первому столбцу до первого нахождения значения с голубым текстом в данном случае это "б/н",
2) Определяем с какой он группы для этого сравниваем первый попавшейся (выше найденного значения)  номер группы (в данном случае это "1.1.2.").
3) И тут либо мы записываем что данный элемент "б/н" равен группе "1.1.2.", или же сразу при нахождении копируем его с первого листа "Исходные данные" в группу "1.1.2." на втором листе "Рабочие"
4) После вставки, продолжаем двигаться вниз, находим "417" голубого цвета, записываем (или сразу копируем) его в группу "1.2.2.1" на втором листе.

Как-то так я себе это представлял.
То есть нужно перенести все значения выделенные цветом в новую табличку (так как в отчете они не выгружаются и их нужно как то туда добавить)
Изменено: Kentavrik7 - 20.05.2019 15:17:52
 
Цитата
Kentavrik7 написал:
2) Определяем с какой он группы для этого сравниваем первый попавшейся (выше найденного значения)  номер группы (в данном случае это "1.1.2.").
Вот тут интересно каким образом?
По описанному алгоритму, если таблица очень большая, то завершения работы такого макроса можно не дождаться.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Согласен предложенный мной алгоритм не годится.
А что если сначала определить диапазоны групп, а потом в них искать цветные строки, например:
Мы знаем что есть группа "1.1.", а за ней идет "1.1.1.", определяем сколько строк между ними, допустим между ними 10 значений, мы ищем в этом диапазоне голубые строки и копируем, во втором листе так же определяем границы и вставляем данную строку в конец диапазона, то есть перед значением группы "1.1.1."
 
Хорошо бы группы изначально знать, либо вытащить их про кретерию, но по какому непонятно. Дальше было бы проще
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Что вы имеете ввиду? Наименование групп известно изначально, диапазоны не статичны, они могут быть больше или меньше.  
 
Вот это я имею ввиду, нужно знать программе что такое группа, поэтому нужен критерий ну допустим у вас три строки в столбце в первой 1.2 во второй 789 и в третьей 3.58
что из них является группой как это программе определить?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
вас три строки в столбце
А разве нельзя совершить счет от "1." вниз до "1.1." ? потом от "1.1" до "1.1.1."? Это и был бы диапазон строк между группами
Ведь мы в массиве можем четко сказать что вот эти цифры это название группы нет ли?
Изменено: Kentavrik7 - 20.05.2019 16:27:51
 
Икак считать по массиву, какой диапазон захватывать от 1.0.0.0.0 до 9.9.9.9.9 проверяя каждую ячейку на принадлежность к этому диапазону?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, Вы что то мудрите. Еще раз, диапазон вот он, не больше ни меньше:
"1.", "1.1.", "1.1.1.", "1.1.2.", "1.2.", "1.2.1.", "1.2.2.", "1.2.2.1.", "1.2.2.2.", "1.2.2.3.", "1.2.3.", "1.2.3.1.", "1.2.3.1.0.", "1.2.3.1.1.", "1.2.3.1.2.", "1.2.3.1.2.1.", "1.2.3.1.2.2.", "1.2.3.2.", "1.2.3.2.1.", "1.2.3.2.2.", "1.2.3.2.2.1.", "1.2.3.2.3.", "1.2.3.2.4.", "1.2.3.2.4.1.", "1.2.3.2.5.", "1.2.4.", "1.2.4.1.", "1.2.4.2.", "1.2.5.", "1.2.5.1.", "1.2.5.1.1.", "1.2.5.2.", "1.2.5.3.", "1.2.6."
34 значения групп, это все. Берем первое значение за начальное, второе за конечное, находим номер "1." например ему равна строка 5, а конечное значение  будет "1.1." ему равна строка 12, значит имеем диапазон с 5 по (12-1) (минус одна строка так как это начало другой группы) строку относится к группе "1.".
Идем дальше, берем за начальный "1.1." его номер строки нам известен он равен 12 берем его за начальный, ищем номер строки следующего диапазона "1.1.1." он равен например 35, получаем диапазон группы "1.1." он равен с 12 по (35-1) строку
Как то так
Изменено: Kentavrik7 - 20.05.2019 17:29:23
 
Добрый день!
В общем что-то набросал, но ни совсем до конца работает, может "спецы" с сайта доделают)))
 
Андрей_26, А если в значениях встрерится 78461.1, то все пойдет совсем не так, как нужно  ;)
"Все гениальное просто, а все простое гениально!!!"
 
Kentavrik7, Если вам понятен алгоритм, в чем же дело реализуйте его в коде.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Андрей_26 , А если в значениях встрерится 78461.1, то все пойдет совсем не так, как нужно  
Ну опираясь на предоставленную информацию, в значениях между "группами" только цифры без точек. Иначе согласен.
 
Nordheim, у меня недостаточно знаний для его реализации
Андрей_26,  сейчас попробую, спасибо
 
Вот так как-то.
"Все гениальное просто, а все простое гениально!!!"
 
 Андрей_26, Выдает ошибку если добавить во второй рабочий лист дополнительные строки между группами, а после этого зацикливается и зависает, к сожалению((
Nordheim,  Спасибо! Но нажал на пуск и он скопировал только строку б/н. Возможно что то не так я делаю ?(
 
Посмотрите внимательно значение 1.2.2.1. на втором листе отсутствует, если добавить то должно все работать. Возможно удалил при многократном тестировании.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Очень здорово, спасибо большое, даже не знаю как выразить благодарность) Очень помогли)
Андрей_26, И вам большое спасибо за помощь)
 
Nordheim, Вопрос один можно, (для будущего), можно ли будет в дальнейшем сделать так что если таблица "исходные данные" и "рабочая" будут разными файлами чтобы он мог работать с ними?  Пример в приложении
 
Если бы не было все так запутано, то желающих помочь было бы больше.  ;)
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, У меня к сожалению есть большая проблема с корректным и доступным изложением мысли) Не знаю даже что с этим поделать, просто когда с задачей сталкиваешься задача кажется понятной, а когда первый раз человек видит, то все спонтанно и запутано.
Страницы: 1
Наверх