2015-10-30 5 views
1

Использование Excel, как я могу создать один столбец, используя несколько столбцов?Объединение нескольких столбцов в один столбец

Например: мне может понадобиться исключить столбцы 2012-2014 и создать столбец за год. В то же время, мне нужно, чтобы сохранить информацию в 2012-2014 и создать один столбец для них, чтобы выровнять по каждой строке (имя, страна, класс, год, данные):

Name  Country Grade 2012  2013  2014 
Smith  France A  0.333194233 0.64347979 0.72795544 
Adams  Germany D  0.307532421 0.580823282 0.851274645 
Franklin Americas C  4.597219783 7.983514354 10.79688839 
Roosevelt Americas B  0.615064841 1.089043653 1.502249374 
Washington Australia A  0.261792462 0.456573955 0.620206846 

Так это должно выглядеть например:

Name  Country Grade Year Data 
Smith  France A  2012 0.333194233 
Smith  France A  2013 0.64347979 
Smith  France A  2014 0.72795544 etc. 

ответ

0

Допуская Name в A1, вставить новый ColumnD и в D1 скопирована вниз костюм:

=A1&"#"&B1&C1 

затем UNPIVOT (детали с изображениями here выбор D1: Gn (n в зависимости)).

После шага 8. Вставка трех новых столбцов в таблице (чтобы стать Б: D), так и в В2:

=LEFT(A2,FIND("#",A2)-1) 

в C2:

=MID(A2,FIND("#",A2)+1,LEN(A2)-LEN(B2)-2) 

в D2:

=RIGHT(A2) 

Уточнить на заказ.

+1

Спасибо за ответ. Ссылка в вашем ответе немного помогла. Спасибо! – Starbucks

-1

Вы пробовали TRANSPOSE в 'Paste Special'? или вы хотите, чтобы он был динамичным?

Link

Найдено решение в: LINK Это работает!

Создать этот модуль и запустить макрос:

Public Sub tranpose() 
Dim i As Long, _ 
    LR1 As Long, _ 
    LR2 As Long, _ 
    LC As Long 
Application.ScreenUpdating = False 
Columns(1).Insert Shift:=xlToRight 
LR2 = Range("B" & Rows.Count).End(xlUp).row 
Range("A1:A" & LR2).Value = Chr(65) 
LC = Cells(1, Columns.Count).End(xlToLeft).Column 
For i = 3 To LC 
    LR1 = Range("A" & Rows.Count).End(xlUp).row + 1 
    LR2 = Cells(Rows.Count, i).End(xlUp).row 
    Range(Cells(1, i), Cells(LR2, i)).Cut Destination:=Cells(LR1, 2) 
    Range(Cells(LR1, 1), Cells(LR1 + LR2 - 1, 1)).Value = Chr(63 + i) 
Next i 
Application.ScreenUpdating = True 
End Sub 
+0

Функция TRANSPOSE возвращает вертикальный диапазон ячеек в качестве горизонтального диапазона или наоборот. Мне нужно создать больше строк информации. Как вы можете видеть, есть только одна строка с «Смитом» и его информацией. Мне нужны три строки Смита, одна и та же информация, однако с дополнительными столбцами, годами и данными. Это нужно сделать для 3000 рядов информации. – Starbucks

+0

[ссылка] (http://www.mrexcel.com/forum/excel-questions/532957-transpose-rowsg-keeping-heading-column-data-column-b.html) –

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