2010-01-22 3 views
2

У меня есть execl таблицу с данными, глядя, как этотВ Excel, как создать несколько строк из одной строки данных

id desc  part no 1  Qty 1 part no 2 Qty 2 part no 3 Qty 3 
1 PartsName 382A012-3-0 3  382A023-3 3  382A012-25 3  

И нужно, чтобы это выглядело как этот

id desc   part no   Qty 
1 PartsName  382A012-3-0  3 
1 PartsName  382A023-3/42-0 3 
1 PartsName  382A012-25/86-0 3 

Это из SQL Таблица, чтобы я мог сделать это в SQL, если это упростит

У кого-нибудь есть предложения, как лучше всего отсортировать это?

+0

Это будет намного проще для синтаксического анализа текста в SQL. Вы должны опубликовать структуру таблицы. – Yada

+0

Я согласен с тем, что это должно быть сделано в SQL. И я действительно быстро посмотрел на это. Но Generating SQL уже заполняет лист бумаги из примерно 20 объединений, чтобы вывести из строя таблицу, и я потерялся в коде. Итак, я закончил все это в Excel, создав строку на номер детали, а затем отсортировав ее, чтобы удалить нуль, а затем отсортировать их по группам по идентификатору. Как это было, это выглядело как меньше работы, чем отладка SQL – Pbearne

ответ

2

Просто сделать в SQL

SELECT id, desc, partNo, qty FROM parts 
UNION SELECT id, desc, partNo2 as partNo, qty2 as qty FROM parts 
UNION SELECT id, desc, partNo3 as partNo, qty3 as qty FROM parts 
ORDER BY id 
+0

Это правильный способ сделать это, но SQL может/будет получать волосатые – Pbearne

1

в UNION Если у Вас нет возможности использовать SQL и нужно использовать Excel. Вы можете использовать функцию TRANSPOSE. Это функция типа массива, поэтому вам нужно использовать {}. Если вы не использовали его, прежде чем я рекомендую сначала прочитать эту помощь. Я, однако, не думаю, что вы можете использовать транспонирование, чтобы получить его, как вы его описываете. Столбец id и desc необходимо обрабатывать отдельно.

0

Вам необходимо добавить следующие формулы на новом листе:

column A=MOD(ROW()+1,3) 

это как скелет :)

первой строки заголовков

column B 
=IF($A2=0,OFFSET(Sheet1!$A$1,COUNTIF($A$2:$A2,0),COLUMN()-2),B1) 

autofil цв C с ней

column D 
=OFFSET(Sheet1!$A$1,COUNTIF($A$2:$A2,0),COLUMN()+CHOOSE($A2+1,-2,0,2)) 

au tofil цв E с ним

еще один - ваше техническое описание является «Лист1»

Смежные вопросы