有条件转置

我有一个如下所示的表格:

SKU ID1 ID2 ID3 ID4 and so on... 111 1ab 2bc 3bc 222 1bb 3bb 4bb abb 333 2bb 3bb 4bc abc 444 1b2 2bb 

我试图格式化所有的数据如下,希望与某种macros:

 SKU ID 111 1ab 111 2bc 111 3bc 222 1bb 222 3bb 222 4bb 222 abb 333 2bb 333 3bb 333 4bc 333 abc 444 1b2 444 2bb 

我曾尝试将所有这一切都一次性转换,但是它没有正确的出现。 我认为需要一个更加macros观的macros观解决scheme,但我不确定。

您可以应用此处详述的过程,但通过过滤Value来select(Blanks)并删除这些行来解决那些比其他更短的数据行(填充的单元更less)。

这是Sheet1的图像:

以下是Sheet1模块中的代码:

 Public Sub ProcessData() Dim rData As Range Dim OutRow As Long Dim DataRow As Long Dim DataCol As Long Dim SKU As Long With Worksheets("Sheet1") Set rData = .Range("D1:J10") ' deliberately larger than the data, as a deminstration OutRow = 1 For DataRow = 2 To rData.Rows.Count SKU = rData(DataRow, 1) If SKU = 0 Then Exit For End If For DataCol = 2 To rData.Columns.Count If Not IsEmpty(rData(DataRow, DataCol)) Then OutRow = OutRow + 1 .Cells(OutRow, 1) = SKU .Cells(OutRow, 2) = rData(DataRow, DataCol) Else Exit For End If Next Next End With End Sub 

这应该给你一个很好的起点。