2016-08-15 4 views
-2

У меня есть набор данных, который выглядит примерно такНеобходимо преобразовать несколько столбцов в строки

Host, software 1, software 2. software 3...... 

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

host,software 1 
host,software 2 
host,software 3 

Любые советы или предложения по этому вопросу будет ЗНАЧИТЕЛЬНО оценили.

Спрашивает

+0

(1) Используйте 'Text-To-column' преобразовать строку в несколько столбцов, (2) выберите результат и скопировать его (3) вставить его с' опцией Transpose' в колонке 'b' и (4) скопировать слово «хозяин» до конца в столбце «A». Готово. – Ralph

+0

Является ли ваш набор данных одной строкой (если нет, что будет представлять собой типичную вторую строку, до и после)? Является ли ваш пример одной ячейкой для начала и три для завершения? – pnuts

+0

http://stackoverflow.com/questions/38910778/excel-transpose-pairs-of-columns/38924815#38924815 – Slai

ответ

0

Вы знакомы с VBA? если да, попробуйте это. Просто вставьте его в модуль и запустите его. Я уверен, что это не самый эффективный способ, но он выполнит эту работу.

Я также предполагаю, что у вас есть только 3 столбца программного обеспечения. Если у вас больше, вам нужно изменить часть, которая говорит «для j = от 1 до 3», чтобы сказать «для j = 1 к X», где X - количество столбцов, которые у вас есть.

Sub transfer() 

'Please make sure to change the name of the sheets to reflect the _ 
correct worksheet names. 
Dim wkInput As Worksheet: Set wkInput = Worksheets("sheet1") 
Dim wkDest As Worksheet: Set wkDest = Worksheets("sheet2") 

'Here we find the maximum number of rows that will be transfered. 
Dim nl As Integer: nl = wkInput.UsedRange.Rows.Count 

'Here we create a few couner variables. 
Dim Row As Integer, Col As Integer, i As Integer, j As Integer 

'*********Procedure begins here************ 
Row = 1 
Col = 1 
For j = 1 To 3 
    For i = 1 To nl - 1 
     wkDest.Cells(Row, Col).Value = wkInput.Cells(i + 1, 1).Value 
     wkDest.Cells(Row, Col + 1).Value = wkInput.Cells(i + 1, j + 1).Value 
     Row = Row + 1 
    Next i 
Next j 

'*******Procedure ends here************* 
End Sub