#google-sheets #google-sheets-formula
Вопрос:
Извините за неточное название, я не уверен, как называется этот формат. Я получил «исследовательскую базу данных» в формате, который вы видите ниже, и мне нужно преобразовать ее (и еще десятки подобных ей) в удобный формат.
Простыни выглядят так:
Компания | Отчет 1 | Отчет 2 | Отчет 3 | Отчет 4 |
---|---|---|---|---|
Компания 1 | 46.8 | -0.2 | 0.2 | |
Компания 2 | 45.7 | -0.3 |
Мне нужно преобразовать его в правильно отформатированный лист данных, чтобы я мог загрузить его в базу данных. Другими словами, он должен стать:
Компания | Сообщить | Счет |
---|---|---|
Компания 1 | Отчет 1 | 46.8 |
Компания 1 | Отчет 2 | -0.2 |
Компания 1 | Отчет 3 | |
Компания 2 | Отчет 4 | 0.2 |
Компания 2 | Отчет 1 | 45.7 |
Компания 2 | Отчет 3 | -0.3 |
Компания 2 | Отчет 4 |
Ничего страшного, если в итоге мы получим строки без значения, их достаточно легко очистить.
Ответ №1:
Во-первых, вы захотите удалить то, что кажется тестовыми данными, из A9:C вашего листа «Данные как есть».
После этого удалите все, что у вас в настоящее время есть в листе результатов (или создайте новый пустой), и поместите следующую формулу в A1:
=ArrayFormula({"Company","Report","Score";SPLIT(QUERY(FLATTEN(IF('Data as Is'!B2:E="",,'Data as Is'!A2:Aamp;"~"amp;'Data as Is'!B1:E1amp;"~"amp;'Data as Is'!B2:E)),"Select * WHERE Col1 Is Not Null"),"~")})
Это приведет к созданию ваших заголовков и всех результатов, при этом строки без результатов уже будут удалены.
Оттуда вы можете форматировать заголовки и данные по своему усмотрению.
Комментарии:
1. Блестяще! Это прекрасно!
2. Рад, что это соответствовало вашим потребностям.
Ответ №2:
Попробуйте это, где вкладка-ваши данные
=query({
arrayformula(vlookup((roundup(flatten(sequence(columns(tab),rows(tab),1,1)/columns(tab)))),{flatten(sequence(columns(tab),rows(tab),1,1)),flatten(transpose(tab))},2,0)),
arrayformula(vlookup(mod(flatten(sequence(rows(tab),columns(tab),0,1)),columns(tab)) 1,{flatten(sequence(rows(tab),columns(tab),1,1)),flatten(tab)},2,0)),
flatten(tab)
},"select * where Col1 is not null and Col2 is not null and Col3 is not null",0)