2017-05-29 128 views
-1

我需要從列A中獲取數據並將每個值添加到行1中的學校。它應該全部成爲列。輸入是:列VBA中的嵌套循環Excel

Input data

,我需要的輸出是這樣的:

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 

的代碼將被應用到多個工作簿和牀單,在服務和學校的數量可以一個不同的。

我試過寫作和搜索,但無法找到任何解決我的問題。 謝謝!

//中號

編輯二零一七年五月三十零日 - 改變了輸入和輸出的例子來闡明什麼,我需要完成。

+0

你怎麼拿出5的第一行? 「數量:5」 –

+0

應該是1,我現在編輯了帖子 – Matthei

+0

我還沒有理解。你能爲所有學校做到嗎?我想看看完整的輸出 –

回答

0

更新的代碼,

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 
+0

謝謝您的迴應!我可能一直不清楚,但這不完全是我需要的。學校1有一個名字,例如Bergsskolan,服務也是如此,例如Ipad Swap Service。所以每個學校的名字都需要寫出來,每個服務都需要寫出來,而不是被稱爲數字。結果將被加載到ERP系統中,因此所有數據都必須有確切的名稱。我用這個信息更新我的問題!感謝您的時間和精力! – Matthei

+0

@Matthei嘗試修改我的代碼。讓我知道如果你需要幫助 –

+0

我已經嘗試過,其中一些是我能夠改變。 我設法讓每所學校出現服務次數: '表格(「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