Нужна подсказка в структурировании данных, а именно в разбитии двух строк на полноценную таблицу.
Исходные данные: две строки и 4 тысячи столбцов (Рис.1)
Задача: Нужно в зависимости от названия в первой строке, брать число которое находится строкой ниже от названия в том же столбце, и вставлять это число в нужную мне ячейку, а если в точности такого названия нет в выделенном мной диапазоне то за место числа ставить "нет" либо "-" (Рис.3)
Моих очень базовых знаний не хватает что бы быстро обработать такое количество данных. Подскажите какими макросами, функциями, условиями ячеек и возможностями экселя я могу решить данную задачу грубо говоря в пару кликов не перелапачивая всю таблицу в ручную.
В данных могут пропускаться, как вся горизонталь полностью, так и пара вертикальных точек на ней. Если такое происходит хотелось что бы ексель не найдя нужное название маркировал пропуски символом или словом. (Рис.2 показан пример двадцатой группы, третьей горизонтальной оси, тут пропущено очень ммного вертикальных точек)
Пояснения: 1) Рис.1 - Таблица данных 2) Рис.2 - как эти данные должны группироваться (сама эта таблица мне не нужна просто показан пример группировки горизонтальных осей и вертикальных точек) 3) Рис.3 - Итоговый результат Название - оно состоит из трех цифр разделенных точками (15.1.7) Первая цифра обозначает номер группы - 15.1.7 (Всего должно быть 36 групп) Вторая цифра (для нас столбец) номер точки по горизонтальной оси в группе - 15.1.7 (всего горизонтальных осей в группе с учетом нуля 8, то есть от 0 до 7 включительно) Третья цифра (для нас строка) обозначает номер точки по вертикальной оси - 15.1.7 (всего вертикальных точек может быть с учетом нуля 25, то есть от 0 до 24 включительно).
Всем привет!
Нужна подсказка в структурировании данных, а именно в разбитии двух строк на полноценную таблицу.
Исходные данные: две строки и 4 тысячи столбцов (Рис.1)
Задача: Нужно в зависимости от названия в первой строке, брать число которое находится строкой ниже от названия в том же столбце, и вставлять это число в нужную мне ячейку, а если в точности такого названия нет в выделенном мной диапазоне то за место числа ставить "нет" либо "-" (Рис.3)
Моих очень базовых знаний не хватает что бы быстро обработать такое количество данных. Подскажите какими макросами, функциями, условиями ячеек и возможностями экселя я могу решить данную задачу грубо говоря в пару кликов не перелапачивая всю таблицу в ручную.
В данных могут пропускаться, как вся горизонталь полностью, так и пара вертикальных точек на ней. Если такое происходит хотелось что бы ексель не найдя нужное название маркировал пропуски символом или словом. (Рис.2 показан пример двадцатой группы, третьей горизонтальной оси, тут пропущено очень ммного вертикальных точек)
Пояснения: 1) Рис.1 - Таблица данных 2) Рис.2 - как эти данные должны группироваться (сама эта таблица мне не нужна просто показан пример группировки горизонтальных осей и вертикальных точек) 3) Рис.3 - Итоговый результат Название - оно состоит из трех цифр разделенных точками (15.1.7) Первая цифра обозначает номер группы - 15.1.7 (Всего должно быть 36 групп) Вторая цифра (для нас столбец) номер точки по горизонтальной оси в группе - 15.1.7 (всего горизонтальных осей в группе с учетом нуля 8, то есть от 0 до 7 включительно) Третья цифра (для нас строка) обозначает номер точки по вертикальной оси - 15.1.7 (всего вертикальных точек может быть с учетом нуля 25, то есть от 0 до 24 включительно).NewDero
Как я понял, нужно "нерегулярную" по кодам строку 1 листа "Данные" натянуть на регулярную (т.е. без пропусков) последовательность кодов, которую нужно предварительно сгенерировать.
Осуществил в прилагаемом файле на листе "Лист1". В колонках A:C генерируются элементы кодировки (формулы для ячеек A1:C1 соответственно):
Код
=ЦЕЛОЕ((СТРОКА()-1)/(8*25))+1
Код
=ЦЕЛОЕ((ОСТАТ(СТРОКА()-1;8*25))/25)
Код
=ОСТАТ(СТРОКА()-1;25)
В колонке D формируем кодовую строку из трёх элементов с разделителем "точка":
Код
=A1&"."&B1&"."&C1
Далее в колонке E ищем позицию сформированного кода в первой строке на листе "Данные"
Код
=ПОИСКПОЗ(D1;Данные!$A$1:$FXJ$1;0)
Наконец, в колонке F получаем значение из второй строки листа "Данные", с заменой отсутствующих значений словом "нет":
На этом остановился, так как бОльшего, вроде, ничего не запрашивалось. Хотя на листе "Пример" увидел некую перекрестную таблицу - с заголовками строк "0-24" и заголовками колонок, состоящих из элементов, оканчивающихся на 0 ("1.0.0","20.3.0"). Если она тоже нужна в таком разрезе, то можно еще лоб поморщить.
Как я понял, нужно "нерегулярную" по кодам строку 1 листа "Данные" натянуть на регулярную (т.е. без пропусков) последовательность кодов, которую нужно предварительно сгенерировать.
Осуществил в прилагаемом файле на листе "Лист1". В колонках A:C генерируются элементы кодировки (формулы для ячеек A1:C1 соответственно):
Код
=ЦЕЛОЕ((СТРОКА()-1)/(8*25))+1
Код
=ЦЕЛОЕ((ОСТАТ(СТРОКА()-1;8*25))/25)
Код
=ОСТАТ(СТРОКА()-1;25)
В колонке D формируем кодовую строку из трёх элементов с разделителем "точка":
Код
=A1&"."&B1&"."&C1
Далее в колонке E ищем позицию сформированного кода в первой строке на листе "Данные"
Код
=ПОИСКПОЗ(D1;Данные!$A$1:$FXJ$1;0)
Наконец, в колонке F получаем значение из второй строки листа "Данные", с заменой отсутствующих значений словом "нет":
На этом остановился, так как бОльшего, вроде, ничего не запрашивалось. Хотя на листе "Пример" увидел некую перекрестную таблицу - с заголовками строк "0-24" и заголовками колонок, состоящих из элементов, оканчивающихся на 0 ("1.0.0","20.3.0"). Если она тоже нужна в таком разрезе, то можно еще лоб поморщить.Gustav