A family of Microsoft spreadsheet software with tools for analyzing, charting, and communicating data.
Hi,
- data in source sht (sheet1)
- results in sheet2
xxxxxxxxxxxx
vba macro
Sub Convert_Sort_Transpose()
'Sep 25, 2015
Dim ws As Worksheet, ws1 As Worksheet
Set ws = Sheets**("Sheet1") '<< source sheet name, change**
Set ws1 = Sheets**("Sheet2") '<< target sheet name, change**
Application.ScreenUpdating = False
ws1.UsedRange.ClearContents
Dim r As Long, r1 As Long, i As Long, c As Long
r = ws.Cells(Rows.Count, 1).End(xlUp).Row
ws.Range("A1:A" & r).Copy: ws1.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ws1.Range("A1:A" & r).RemoveDuplicates Columns:=1, Header:=xlYes
r1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row
ws1.Range("A1:A" & r1).Sort Key1:=ws1.[A1], Order1:=xlAscending, Header:=xlYes, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
ws1.[B1].Value = ws.[B1].Value
ws.AutoFilterMode = False
For i = 2 To r1
ws.Range("A1:A" & r).AutoFilter field:=1, Criteria1:=ws1.Cells(i, 1).Value
ws.Range("b2:b" & r).SpecialCells(xlCellTypeVisible).Copy
ws1.Cells(i, 2).PasteSpecial xlPasteValues, Transpose:=True
c = ws1.Cells(i, Columns.Count).End(xlToLeft).Column
If c = 2 Then GoTo nnext
ws1.Cells(i, 2).Resize(, c - 1).Sort Key1:=ws1.Cells(i, 2), Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight, DataOption1:=xlSortNormal
nnext:
Next
ws.AutoFilterMode = False
With ws1.UsedRange
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Columns.AutoFit
End With
[A1].Select
Application.ScreenUpdating = True
End Sub