
25-11-16, 09:59
|
 | Συντονιστής Όνομα: Σπύρος Τσιλιγιάννης Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 22-11-2011 Περιοχή: Αθήνα
Μηνύματα: 2.321
| |
Το βιβλίο, πρέπει να γίνει .xlsm
Το φύλλο dara μετονομάστηκε Data.
Το φύλλο data Year μετονομάστηκε Data_Year.
Θεωρούμε ότι:
Το Data, δεν αλλάζει δομή αλλά δεδομένα κάθε μήνα.
Το Data_Year δεν αλλάζει δομή αλλά προστίθενται στήλες, κάθε μήνα.
Τα φύλλα, δεν θα αλλάξουν όνομα, ποτέ.
Βάζουμε στο e2 του Data: =E3&E4&E5 και τραβάμε δεξιά, μέχρι στήλη o.
Βάζουμε στο g2 του Data_Year: =G3&G4&G5 και τραβάμε δεξιά, όσο χρειάζεται.
Σε μια module, αντιγράφουμε τον κώδικα: Κώδικας: Sub transfer()
Application.ScreenUpdating = False
If ActiveSheet.Name <> "Data_Year" Then Sheets("Data_Year").Activate
Dim lcol1 As Long
lcol1 = Sheets("Data_Year").Cells(2, Columns.Count).End(xlToLeft).Column
Dim Rng As Range
Set Rng = Sheets("Data_Year").Range(Cells(2, 7), Cells(2, lcol1))
Dim i As Long, comb As String, mtch As Long
i = 0
For i = 5 To 9
comb = Sheets("Data").Cells(2, i)
If comb <> "" Then
On Error Resume Next
mtch = Application.WorksheetFunction.Match(comb, Rng, 0) + 6
If mtch <> 0 Then
Dim c As Byte
For c = 7 To 49
If Sheets("Data").Cells(c, i).Value <> "" Then
If Not Sheets("Data_Year").Cells(c, mtch).HasFormula Then
Sheets("Data_Year").Cells(c, mtch).Value = Sheets("Data").Cells(c, i).Value
End If
End If
Next c
End If
End If
Next i
End Sub
1
Ο κώδικας, θα μεταφέρει στην κατάλληλη στήλη, τις τιμές από το Data.
2
Δεν αντιγράφονται κενά κελιά.
3
Δεν μεταβάλλονται, οι τύποι στο Data_Year.
|