Страницы: 1
RSS
Помогите транспарировать данные
 
Добрый вечер! Есть таблица вопросов и ответов, которые расположены блоки на странице исходные данные. Как вывести на странице преобразованные данные в таблицу с готовыми ответами?
Файлы примера прикладываю.
 
В ячейку В2 формулу, и протянуть вниз
Код
=ЕСЛИ(ИЛИ(A3=" 1. Ответ 1";ЛЕВСИМВ(A2;3)="[+]";ЛЕВСИМВ(A2;6)="Вопрос");1;0)

После чего установить фильтр и отфильтровать по 0. Удалить строки. У Вас останутся только нужные строки.
Далее делаете ссылки на нужные ячейки (формулы записаны в файле), выделяете диапазон из трех ячеек вниз (будет одна строка с формулами и три пустые, в файле закрашены желтым) и протягивайте вниз.
После чего копируете и вставляете только значения, ну а потом фильтр и удаляете пустые строки
Изменено: Msi2102 - 12.07.2022 17:38:13
 
Msi2102, идея хорошая, но вот как потом в строки транспорировать
 
Цитата
Medvedoc написал:
строки транспорировать
Зачем, там именно в том варианте какой Вам нужен, по крайней мере в Вашем файле
Изменено: Msi2102 - 12.07.2022 19:09:36
 
Msi2102, хотя понял как доработать под мой вариант =) спасибо огромное!!!
Как отредактирую файл выложу тут
 
Цитата
Medvedoc написал:
как доработать под мой вариант
А что там дорабатывать, CTRL+H и заменить вначале слово "Вопрос" на пустоту, а потом заменить "[+]"
 
Msi2102, это я через формулы реализовал =) просто не разобрался с формулой СМЕЩ()
 
Не помешает упомянуть что в русском языке нет слов транспарировать/транспорировать. Есть транспонировать
 
Если ответ на вопрос всегда один и только один, то можно в PQ без ручных действий:
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "QAdata" ]}[Content],
  toList = List.Buffer ( List.First ( Table.ToColumns ( data ) ) ),
  qNumsPosns = List.PositionOf ( toList, "Вопрос  №", Occurrence.All, ( x, y ) => Text.StartsWith ( x, y ) = true ),
  qTextPosns = List.Transform ( qNumsPosns, ( x ) => x + 1 ),
  aPosns = List.PositionOf ( toList, "[+]", Occurrence.All, ( x, y ) => Text.StartsWith ( x, y ) = true ),
  rowsDataPosns = List.Zip ( { qNumsPosns, qTextPosns, aPosns } ),
  transform = List.TransformMany (
    rowsDataPosns,
    ( x ) => { List.Transform ( x, ( z ) => toList{z} ) },
    ( x, y ) => { Number.From ( Text.AfterDelimiter ( y{0}, "№ " ) ), y{1}, Text.AfterDelimiter ( y{2}, ". " ) }
  ),
  toTable = Table.FromRows ( transform, type table [ #"№ Вопроса" = Int64.Type, Вопрос = text, Ответ = text ] )
in
  toTable
Страницы: 1
Наверх