Excel 将一列值转换为一行
所以我有这样的数据:Excel 将一列值转换为一行,excel,vba,csv,Excel,Vba,Csv,所以我有这样的数据: A B sku custom_option_row_sku AGR370A AGR370A-3 AGR370A-4 AGR370A-5 AGR370A-6 AGR370A-8 AGR370A-9 AGR370A-10 AGR370A-210 AGR370A-212 AGR370B AGR370B-3
A B
sku custom_option_row_sku
AGR370A AGR370A-3
AGR370A-4
AGR370A-5
AGR370A-6
AGR370A-8
AGR370A-9
AGR370A-10
AGR370A-210
AGR370A-212
AGR370B AGR370B-3
AGR370B-4
...
我需要将B列转换成一行,这样它仍然匹配a列中的值
理想的结局是:
A B
sku custom_option_row_sku
AGR370A AGR370A-3, AGR370A-4, AGR370A-5, etc.
这是否可以通过内置功能实现,或者我需要VBA来实现?提前谢谢。我只是用你给我的例子用这段代码做的。如果你有任何问题,请告诉我,但这对我很有效。一定要备份一份以防万一
Sub resort()
Dim thesheet As Worksheet
Set thesheet = Sheets("Sheet1")
Dim lastrow As Long
Dim x As Long
Dim newRow As Long
Dim colA As String
Dim deleterRow As Long
lastrow = thesheet.Range("B" & Rows.Count).End(xlUp).Row
With thesheet
newRow = 0
For x = 1 To lastrow
colA = .Cells(x, 1).Value
If colA <> "" Then
colA = .Cells(x, 1).Value
newRow = x
Else
.Cells(newRow, 2).Value = .Cells(newRow, 2).Value & ", " & .Cells(x, 2).Value
End If
Next
deleterRow = 1
For x = 1 To lastrow
colA = .Cells(deleterRow, 1).Value
If colA = "" Then
.Rows(deleterRow).Delete
Else
deleterRow = deleterRow + 1
End If
Next
End With
End Sub
Sub度假村()
将工作表变暗为工作表
设置图纸=图纸(“图纸1”)
最后一排一样长
暗x等长
昏暗的纽罗
淡可乐串
将删除箭头变长
lastrow=sheet.Range(“B”和Rows.Count).End(xlUp).Row
用这张纸
newRow=0
对于x=1到最后一行
colA=.Cells(x,1).Value
如果是可乐,那么
colA=.Cells(x,1).Value
newRow=x
其他的
.Cells(newRow,2).Value=.Cells(newRow,2).Value&“,”&.Cells(x,2).Value
如果结束
下一个
DeleteRow=1
对于x=1到最后一行
colA=.Cells(deleterRow,1).Value
如果可乐=“那么
.行(删除箭头)。删除
其他的
DeleteRow=DeleteRow+1
如果结束
下一个
以
端接头
如果没有那么多信息,您不一定需要VBA。只需从列中复制所需数据,转到要粘贴的行,右键单击->粘贴特殊->转置。图标如下所示:非常接近。。谢谢唯一的问题是,这些值现在在不同的单元格中分隔,但是它们都需要用逗号分隔,并包含在B列中。@Anon我对代码做了一些调整。这一次我把这些注释删掉了,因为它们需要很长时间才能输入,但如果您有任何问题,请参考我提供的旧代码。我测试了一下,效果很好。如果您有任何问题,请告诉我。好的,这就成功了,但是旧的行不会被删除。我得到一个异常:删除range类的方法失败
-有什么想法吗?谢谢。@Anon您的工作表受保护了吗?不是:(……如果我按“调试”,它会突出显示这一行.Rows(deleterRow)。Delete
-不过这没什么大不了的,因为我现在可以过滤掉a列中的空白。再次感谢您。