Condividi:        

Macro Excel - Inserimento di n righe

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 Excel - Inserimento di n righe

Postdi PieroS4 » 21/06/13 15:21

Ciao a tutti,
ho un problema che non riesco a risolvere, sareste in grado di aiutarmi?
Ho diverse colonne da A a Z, sulla colonna B sono contenute data e ora con step di 10 minuti tipo:
"TimeStamp C1-Maximum #40(m/s) @ 20m South-10 min Average
01/05/2013 00:10 1.503873
01/05/2013 00:20 1.55105
01/05/2013 00:30 2.024716
01/05/2013 00:40 1.615437
01/05/2013 00:50 1.249514
01/05/2013 01:00 1.19723
01/05/2013 01:10 0.6346083
01/05/2013 01:20 1.360441
01/05/2013 01:30 1.828364
01/05/2013 01:40 2.080176
voglio controllare che lo step dei 10 minuti sia rispettato ad esempio (B2-B1>0.00695) se il valore restituito è superiore inserisce una riga con data e ora mancanti e sulle celle successive da "C:Z" tutti valori -1.

Non so se sono stato abbastanza chiaro...
Ultima modifica di PieroS4 su 21/06/13 15:34, modificato 1 volte in totale.
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Sponsor
 

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 21/06/13 15:30

Ciao,
prima di tutto benvenuto nel nostro forum.

Ti è sfuggito "invio" prima di aver completato il quesito !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 21/06/13 15:37

PS: a volte può capitarmi di avere anche un'ora o due di buco, quindi dovrebbe inserirmi "N" righe tanti quanti sono gli step saltati...
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 21/06/13 16:16

Ciao,
per esattezza 10 min. corrispondono a "0,006944444444444440"
E' preferibile utilizzare un modo diverso per calcolare la differenza di 10 min. (per es. 10 min. / 1440 min, al giorno)

Quanto chiedi potrebbe essere realizzato con una macro in VBA. Tu come te la cavi con la programmazione e con il VBA?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi wallace&gromit » 21/06/13 17:11

potresti anche fare un nuovo elenco continuo con gli orari completi e cercare le corrispondenze con una formula di questo tipo:
Codice: Seleziona tutto
=SE(VAL.ERRORE(CERCA.VERT(E1;A$1:B$13;2;0));-1;CERCA.VERT(E1;A$1:B$13;2;0))

le ore si trovano in colonna A e i dati originali si trovano in colonna B il nuovo elenco di orari è in colonna E.
È molto semplificato rispetto al tuo caso ma magari riesci ad adattarlo.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 21/06/13 17:29

Ciao,
prima leggi quanto ti ha scritto W&G
e poi prova questo esempio
Codice: Seleziona tutto
Sub Inserisci_Intervalli_Mancanti()
    Dim UR As Long, I As Integer
   
    Sheets("Foglio1").Select
    UR = Range("B" & Rows.Count).End(xlUp).Row
    For I = UR - 1 To 2 Step -1
        aa = Cells(I + 1, 2) - Cells(I, 2)
        If Round(Cells(I + 1, 2) - Cells(I, 2), 14) > 10 / 1440 Then
            Rows(I + 1).Insert Shift:=xlDown
            Cells(I + 1, 1) = Cells(I + 2, 1)
            Cells(I + 1, 2) = Cells(I + 2, 2) - 10 / 1440
            I = I + 1
'
'  QUI vanno le istruzioni che impostano i dati nelle altre celle da  "C"  a  "Z"
'
        End If
       
    Next I
    MsgBox "Elaborazione Conclusa"
End Sub


Se gli intervalli mancanti vengono inseriti correttamente allora prova tu ad inserire le istruzioni per impostare i dati nel resto delle celle.
E' abbastanza semplice e ... ti chiedo di provarci.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 24/06/13 07:59

Grazie a tutti per l'aiuto! ricky53 la macro va in errore sulla riga "aa = Cells(I + 1, 2) - Cells(I, 2)" :roll:
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 24/06/13 10:20

Ciao,
l'istruzione va tolta, serviva solo per le mie prove. Mi sono dimenticato di cancellarla.

Probabilmente tu hai "Option Explicit" e ti va in errore perchè la variabile "aa" non è definita.


CONSIGLIO per il futuro: quando si ottiene un errore va riportato sempre il numero dell'errore ed il messaggio collegato.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 24/06/13 11:11

Ho eliminato la riga "aa = Cells(I + 1, 2) - Cells(I, 2)" e adesso va in errore di run-time'13' tipo non corrispondente sulla riga successiva...
Io ho excel 2010
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Re: Macro Excel - Inserimento di n righe

Postdi Anthony47 » 24/06/13 11:12

Secondo me tu non hai, in colonna B, una data/ora ma una stringa.
Prova a modificare questo pezzo di macro
If Round(Cells(I + 1, 2) - Cells(I, 2), 14) > 10 / 1440 Then
Rows(I + 1).Insert Shift:=xlDown
Cells(I + 1, 1) = Cells(I + 2, 1)
Cells(I + 1, 2) = Cells(I + 2, 2) - 10 / 1440
I = I + 1
in
If Round(CDate(Cells(I + 1, 2)) - CDate(Cells(I, 2)), 14) > 10 / 1440 Then
Rows(I + 1).Insert Shift:=xlDown
Cells(I + 1, 1) = Cells(I + 2, 1)
Cells(I + 1, 2) = CDate(Cells(I + 2, 2)) - 10 / 1440
I = I + 1


Se anche cosi' non risolvi, allora per ragionare al meglio potrebbe essere utile pubblicare un esempio di file; per come fare guarda qui: viewtopic.php?f=26&t=80395.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 24/06/13 11:32

ho provato, ma va ancora in errore... ho caricato il file
http://www.filedropper.com/esempio_1
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 24/06/13 11:42

Ciao,
al momento non poso scaricare il tuo file (firewall)

Quanto vale "I" quando ottieni l'errore?
Quante righe hai ^

A mio avviso hai dei dati "sporchi".
Come inserisci i dati?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 24/06/13 11:47

Righe circa 5.000... I dati mi arrivano già così... il formato della colonna "B" è personalizzato gg/mm/aaaa hh:mm
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Re: Macro Excel - Inserimento di n righe

Postdi Flash30005 » 24/06/13 11:57

Ci sono campi sporchi nella colonna B dopo i dati
seleziona dalla prima cella vuota fino alla cella B5000
poi premi Canc
rielabora la macro con la modifica di Anthony e non avrai l'errore menzionato

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 24/06/13 12:01

Ciao,
leggi quanto scritto da Flash.

Adesso prova questa modifica
Codice: Seleziona tutto
Sub Inserisci_Intervalli_Mancanti()
    Dim UR As Long, I As Integer, mCalcola As Variant, Aggiunti As Long
   
    mCalcola = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
   
    Sheets("Foglio1").Select
    UR = Range("B" & Rows.Count).End(xlUp).Row
    Aggiunti = 0
    For I = UR - 1 To 2 Step -1
        If Cells(I + 1, 2) <> "" Then ' <<===== Aggiunta per eliminare l'errore
            If Round(Cells(I + 1, 2) - Cells(I, 2), 10) > 10 / 1440 Then
                Rows(I + 1).Insert Shift:=xlDown
                Cells(I + 1, 1) = Cells(I + 2, 1)
                Cells(I + 1, 2) = Cells(I + 2, 2) - 10 / 1440
                I = I + 1
                Aggiunti = Aggiunti + 1
'
'  QUI vanno le istruzioni che impostano i dati nelle altre celle da  "C"  a  "Z"
'
            End If
        Else  ' <<===== può essere tolta dopo le prove
            MsgBox "La riga  " & I + 1 & "  contiene dati non validi" ' <<===== può essere tolta dopo le prove
            Exit Sub ' <<===== può essere tolta dopo le prove
        End If
    Next I
   
    Application.ScreenUpdating = True
    Application.Calculation = mCalcola
   
    MsgBox "Elaborazione Conclusa" & vbCrLf & vbCrLf & "Aggiunti:  '" & Aggiunti & "'   intervalli"
End Sub



Ho messo un controllo che puoi togliere: leggi i commenti nel codice.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 24/06/13 14:17

Grazie a tutti! Funziona! Proverò a inserire la parte mancante! :lol:
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06

Re: Macro Excel - Inserimento di n righe

Postdi ricky53 » 24/06/13 14:45

Ciao,
è molto semplice: pensa a cosa devi fare e ... il risultato verrà quasi da solo
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Excel - Inserimento di n righe

Postdi PieroS4 » 24/06/13 16:27

UC = Range("IV1").End(xlToLeft).Column

For Y = UC To 3 Step -1
Cells(I, Y) = "-1"
Next Y
PieroS4
Newbie
 
Post: 8
Iscritto il: 21/06/13 15:06


Torna a Applicazioni Office Windows


Topic correlati a "Macro Excel - Inserimento di n righe":


Chi c’è in linea

Visitano il forum: Nessuno e 131 ospiti

cron