基于引用第一列,在excel中将行转换为列

基于引用第一列,在excel中将行转换为列,excel,excel-formula,Excel,Excel Formula,我有一个包含以下信息的文件 #Name Image Image Image product 1 image111A.jpg image111B.jpg product 2 image222A.jpg image222B.jpg image222C.jpg product 3 image333A.jpg image333B.jpg 并希望使用宏或公式在excel中转换为如下所示 #Name

我有一个包含以下信息的文件

#Name           Image           Image   Image
product 1       image111A.jpg   image111B.jpg   
product 2       image222A.jpg   image222B.jpg   image222C.jpg
product 3       image333A.jpg   image333B.jpg   
并希望使用宏或公式在excel中转换为如下所示

#Name         Image
product 1     image111A.jpg
product 1     image111B.jpg
product 2     image222A.jpg
product 2     image222B.jpg
product 2     image222C.jpg
product 3     image333A.jpg
product 3     image333B.jpg

可能应该是这样的。这可以做得更好,但我想,那样的话就更难理解了

Sub MakeItFlat()
Dim sourceSheet, targetSheet As Worksheet
Dim counterRow, counterColumn, counterTarget As Integer
Dim tempString As String
Set sourceSheet = Application.ActiveWorkbook.Worksheets("Sheet1")
Set targetSheet = Application.ActiveWorkbook.Worksheets("Sheet2")

counterRow = 0
counterTarget = 0
Do While sourceSheet.Range("A1").Offset(counterRow, 0).Value <> ""
    tempString = sourceSheet.Range("A1").Offset(counterRow, 0).Value
    counterColumn = 1
    Do While sourceSheet.Range("A1").Offset(counterRow, counterColumn).Value <> ""
        targetSheet.Range("A1").Offset(counterTarget, 0).Value = tempString
        targetSheet.Range("A1").Offset(counterTarget, 1).Value = _ 
             sourceSheet.Range("A1").Offset(counterRow, counterColumn).Value
        counterTarget = counterTarget + 1
        counterColumn = counterColumn + 1
    Loop
    counterRow = counterRow + 1
Loop

End Sub
Sub-MakeItFlat()
Dim sourceSheet,targetSheet作为工作表
Dim计数器行、计数器列、计数器目标为整数
将字符串设置为字符串
设置sourceSheet=Application.ActiveWorkbook.Worksheets(“Sheet1”)
Set targetSheet=Application.ActiveWorkbook.Worksheets(“Sheet2”)
柜台行=0
反目标=0
Do While sourceSheet.Range(“A1”).Offset(计数器行,0)。值“”
tempString=sourceSheet.Range(“A1”).Offset(计数器行,0).Value
计数器列=1
Do While sourceSheet.Range(“A1”).Offset(计数器行、计数器列)。值“”
targetSheet.Range(“A1”).Offset(反目标,0)。值=tempString
targetSheet.Range(“A1”).Offset(反目标,1)。值=\u
sourceSheet.Range(“A1”).Offset(计数器行、计数器列).值
反目标=反目标+1
计数器列=计数器列+1
环
柜台行=柜台行+1
环
端接头

要获得有意义的答案,请阅读常见问题解答及其说明和我个人的最爱: