我有一个像这样的Excel工作表:
Category Value
X 1
X 2
X 3
X 4
Y 1
Z 1
Z 2
我想将其转换为类别,并将值行转换为列。像这样:
Category Value1 Value2 Value3 Value4
X 1 2 3 4
Y 1
Z 1 2
伙计们,您知道怎么做吗?我真的很坚持。 非常感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
将数据从下到上依次排列,然后进行重组。
Option Explicit
Sub expandValues()
Dim i As Long, mx As Long, arr As Variant, tmp As Variant
With Worksheets("sheet7")
'determine no of values and create new headers
For i = 1 To Application.Max(.Columns("B"))
.Cells(1, i + 1) = "value" & i
Next i
'transfer values
For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 3 Step -1
If .Cells(i, "A").Value2 = .Cells(i - 1, "A").Value2 Then
With .Range(.Cells(i, "B"), .Cells(i, .Columns.Count).End(xlToLeft))
.Parent.Cells(i - 1, 3).Resize(1, .Columns.Count) = .Value2
End With
.Cells(i, "A").EntireRow.Delete
End If
Next i
End With
End Sub
答案 2 :(得分:0)
这是公式方法,
首先在单元格C2中编写此数组公式,然后按Ctrl + Shift + Enter从A列中查找唯一值(即X,Y,Z)并将其向下拖动。
= IFERROR(INDEX($ A $ 2:$ A $ 8,MATCH(0,COUNTIF($ C $ 1:C1,$ A $ 2:$ A $ 8),0)),“”)
现在填充您的列标题中的value1,value2等。
最后在单元格D2中写入此公式并将其向右和向下拖动。
= IF(COUNTIFS($ A $ 2:$ A $ 8,$ C2,$ B $ 2:$ B $ 8,RIGHT(D $ 1,1))> 0,RIGHT(D $ 1,1)* 1,“” )