Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro per ordinare, tagliare ed incollare

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro per ordinare, tagliare ed incollare

Postdi Breeedget » 12/05/14 00:28

Buona sera e complimenti per questo forum, credo sia davvero il più esaustivo di tutti.
Inizio dicendo che, come molti che aprono thread sull'argomento, non sono pratica di VBA, ma per necessità ho iniziato ad usarlo.
Sto lavorando su un file Excel che è un output di un database finanziario che ha disposto i dati per riga: nella prima colonna ho le intestazioni:
-A2 =Nome società;
- A3= Intestazione "Date";
- da A4 ad A16 i nomi delle variabili estratte dal database;
- A17= riga vuota.

In ogni foglio ho più società, quindi si va dalle 200 alle 4000 righe per foglio.
Nelle colonne che vanno da B a DI ho i dati estratti con cadenza mensile, dal 2005 ad oggi. Il problema è che il database ha messo i dati nell'intervallo da B a DI in un modo che mi rende difficile la loro analisi. Nella colonna B (che per me dovrebbe contenere tutti i dati del Gennaio 2005) ho, ad esempio, per la società X i dati del periodo giusto(nel range da B3, dove ho la data delle informazioni, a B16), ma per la società sotto ho i dati (da B19 a B32) del 2007, ad esempio, perchè non erano disponibili dati precedenti. La cosa seccante è che in questo ultimo caso non solo ho i dati iniziali nel posto sbagliato, ma anche tutti i dati di periodi successivi vanno a finire in una colonna sbagliata.
Io vorrei riordinare i dati in modo da avere nella colonna B le informazioni di gennaio 2005, nella C quelle di febbraio 2005 e così via fino ad aprile 2014 nella colonna DI. Naturalmente per quelle società che non hanno dati disponibili nel periodo cui fa riferimento la colonna, le celle relative dovrebbero rimanere vuote.
E' possibile realizzare una macro per fare tutto questo?
Spero di essere stata chiara nella mia spiegazione e grazie fin da ora a chiunque possa darmi una mano.
Win 7+ Office 2007
Breeedget
Utente Junior
 
Post: 12
Iscritto il: 11/05/14 23:56

Sponsor
 

Re: Macro per ordinare, tagliare ed incollare

Postdi Anthony47 » 12/05/14 08:26

Ciao Breeedget, benvenuta nel forum.
Si puo' fare, ma serve un file di esempio dei dati di partenza, contenente almeno 5-10 blocchi di dati.

Vedi se puoi pubblicarlo usando un server di filesharing, come descritto qui: viewtopic.php?f=26&t=80395

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per ordinare, tagliare ed incollare

Postdi Breeedget » 12/05/14 10:05

Grazie Anthony.
Ho caricato un foglio di esempio che dovrebbe trovarsi su http://rapidshare.com/share/7EDAE3512EB ... 3DC64AA7EA .
Come vedi le prime righe vanno bene, ma alla riga 99 ci sono già dei dati fuori posto.
Win 7+ Office 2007
Breeedget
Utente Junior
 
Post: 12
Iscritto il: 11/05/14 23:56

Re: Macro per ordinare, tagliare ed incollare

Postdi Breeedget » 12/05/14 10:15

Ah dimenticavo, non so se può essere utile, ma io uso Excel 2007.
Win 7+ Office 2007
Breeedget
Utente Junior
 
Post: 12
Iscritto il: 11/05/14 23:56

Re: Macro per ordinare, tagliare ed incollare

Postdi Anthony47 » 12/05/14 14:51

Prova a utilizzare questa macro:
Codice: Seleziona tutto
Sub breedg()
Dim I As Long, LastA As Long, myY As Long, myM As Long, MDiff As Long
'
LastA = Cells(Rows.Count, 1).End(xlUp).Row
For I = 3 To LastA Step 16
    If Not IsError(Cells(I, 2)) Then
        myY = Year(Cells(I, 2)) - 2005
        myM = Month(Cells(I, 3)) - 2
        MDiff = myY * 12 + myM
        If MDiff > 0 Then
            Cells(I, 2).Resize(14, MDiff).Insert Shift:=xlToRight
        End If
    End If
Next I
End Sub

1) La inserisci in un Modulo del vba:
-da Excel, Alt-F11 per aprire l' editor delle macro
-Menu /Inserisci /Modulo
-copia i codice e incollalo nel frame di destra
2) la lanci avendo "Attivo" il foglio che ti interessa:
-selezioni il foglio
-Alt-F8
-selezioni "breedg" dall' elenco delle macro disponibili
-premi Esegui

Ti segnalo che pero' ci sono delle incongruenze dovute alla formula con cui e' stata calcolata la prima data della serie: =DATA(ANNO(C3);MESE(C3)-1;GIORNO(C3))
Infatti in alcuni casi questo porta ad avere la prima data nello stesso mese della seconda; come da esempio capita in riga 99.

Per i miei scopi ho pertanto usato la data in colonna C.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per ordinare, tagliare ed incollare

Postdi Breeedget » 12/05/14 17:43

Grazie Anthony, ma dopo un pò che l'ho fatta partire mi dà: Errore di run time '13, tipo non supportato e nel modulo vba evidenzia in giallo myY = Year(Cells(I, 2)) - 2005. Come posso fare?
Win 7+ Office 2007
Breeedget
Utente Junior
 
Post: 12
Iscritto il: 11/05/14 23:56

Re: Macro per ordinare, tagliare ed incollare

Postdi Anthony47 » 12/05/14 22:54

Evidentemente ci sono delle righe il cui contenuto e' difforme dall' esempio pubblicato...
Prova ques' altra versione:
Codice: Seleziona tutto
Sub breedg()
Dim I As Long, LastA As Long, myY As Long, myM As Long, MDiff As Long
'
LastA = Cells(Rows.Count, 1).End(xlUp).Row
For I = 3 To LastA Step 16
    If IsDate(Cells(I, 3)) Then
        myY = Year(Cells(I, 3)) - 2005
        myM = Month(Cells(I, 3)) - 2
        MDiff = myY * 12 + myM
        If MDiff > 0 Then
            Cells(I, 2).Resize(14, MDiff).Insert Shift:=xlToRight
        End If
    End If
Next I
End Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per ordinare, tagliare ed incollare

Postdi Breeedget » 13/05/14 01:22

Grazie mille Anthony, questa funziona benissimo! :D
Scusami per l'inconveniente del contenuto diverso nell'esempio... non pensavo che alcuni fogli di questo file enorme su cui sto lavorando fossero diversi, ma ora che me lo ha fatto notare una fonte talmente attendibile cambierò idea :)
Grazie ancora e a presto.
Win 7+ Office 2007
Breeedget
Utente Junior
 
Post: 12
Iscritto il: 11/05/14 23:56


Torna a Applicazioni Office Windows


Topic correlati a "Macro per ordinare, tagliare ed incollare":


Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti