列VBA中的嵌套循环Excel
我需要从列A中获取数据并将每个值添加到行1中的学校。它应该全部成为列。输入是:列VBA中的嵌套循环Excel
,我需要的输出是这样的:
School SERVICE Number of Price
Granbacka skola Computer 1 500
Granbacka skola Ipads 25 600
Granbacka skola Iphone 0 700
Granbacka skola Ipad Swap 0 800
Granbacka skola Iphone Swap 0 900
Granbacka skola Service 0 1000
Bagartorps förskola Computer 1 500
Bagartorps förskola Ipads 0 600
Bagartorps förskola Iphone 5 700
Bagartorps förskola Ipad Swap 4 800
Bagartorps förskola Iphone Swap 0 900
Bagartorps förskola Service 1 1000
Ekensbergs skola Computer 2 500
Ekensbergs skola Ipads 0 600
Ekensbergs skola Iphone 33 700
Ekensbergs skola Ipad Swap 0 800
Ekensbergs skola Iphone Swap 0 900
Ekensbergs skola Service 0 1000
Frösunda skola Computer 3 500
Frösunda skola Ipads 0 600
Frösunda skola Iphone 0 700
Frösunda skola Ipad Swap 0 800
Frösunda skola Iphone Swap 2 900
Frösunda skola Service 0 1000
的代码将被应用到多个工作簿和床单,在服务和学校的数量可以一个不同的。
我试过写作和搜索,但无法找到任何解决我的问题。 谢谢!
//中号
编辑二零一七年五月三十零日 - 改变了输入和输出的例子来阐明什么,我需要完成。
更新的代码,
Sub loopcols()
Dim i As Long, j As Long, k As Long, x As Long, y As Long
i = Cells(1, Columns.Count).End(xlToLeft).Column() - 2
j = Cells(Rows.Count, 1).End(xlUp).Row() - 1
Sheets.Add.Name = "newSheet"
x = 1
y = 1
For k = 1 To i * j
If k Mod j <> 0 Then
Sheets("newSheet").Cells(k, 1) = Cells(1, 2 + x)
Sheets("newSheet").Cells(k, 2) = Cells(y + 1, 1)
Sheets("newSheet").Cells(k, 4) = Cells(y + 1, 2)
y = y + 1
Else
Sheets("newSheet").Cells(k, 1) = Cells(1, 2 + x)
Sheets("newSheet").Cells(k, 2) = Cells(y + 1, 1)
Sheets("newSheet").Cells(k, 4) = Cells(y + 1, 2)
x = x + 1
y = 1
End If
Next k
x = 1
y = 3
For k = 1 To i * j
Sheets("newSheet").Cells(k, 3) = Cells(x + 1, y)
x = x + 1
If k Mod j = 0 Then
x = 1
y = y + 1
End If
Next k
Sheets("newSheet").Rows(1).Insert
Sheets("newSheet").Cells(1, 1) = "School"
Sheets("newSheet").Cells(1, 2) = Cells(1, 1)
Sheets("newSheet").Cells(1, 3) = "Number Of:"
Sheets("newSheet").Cells(1, 4) = Cells(1, 2)
End Sub
谢谢您的回应!我可能一直不清楚,但这不完全是我需要的。学校1有一个名字,例如Bergsskolan,服务也是如此,例如Ipad Swap Service。所以每个学校的名字都需要写出来,每个服务都需要写出来,而不是被称为数字。结果将被加载到ERP系统中,因此所有数据都必须有确切的名称。我用这个信息更新我的问题!感谢您的时间和精力! – Matthei
@Matthei尝试修改我的代码。让我知道如果你需要帮助 –
我已经尝试过,其中一些是我能够改变。 我设法让每所学校出现服务次数: '表格(“newSheet”)。Cells(k + 1,2)= Sheets(“Sheet1”)。Cells(1,y + 3) 但我不能找出服务部分: '表( “newSheet”)范围(将细胞(K + 1,3),将细胞(K + 1 + 1,3))=' 表( “工作表Sheet” ).Cells(y + 1,2)' 每项服务都会出现一次,然后在下一次学校循环之前它是空白的,然后再次出现。我需要获取代码才能获得每项服务的学校数量然后循环到下一个等等。 – Matthei
你怎么拿出5的第一行? “数量:5” –
应该是1,我现在编辑了帖子 – Matthei
我还没有理解。你能为所有学校做到吗?我想看看完整的输出 –