Condividi:        

FORMULA O MACRO

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

FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 01:36

Buona giornata.

Avrei uno dei miei soliti quesiti.

Sul foglio excel di cui allego una sintesi ho cinque colonne, A-B-C-D-E.
Nelle colonne successive F-G-H-I Vorrei ricavare quanto segue:

In colonna “ F ” con un asterisco ho inserito la formula seguente……………. =SE(E1>18;"*";"") mettendo per l’appunto un asterisco. Nelle colonne “ G-H-I ” la formula che ovviamente a contrassegnato i valori di “ E ” quando non trova più un valore superiore a diciotto dovrebbe fare la somma dei valori corrispondenti all’asterisco e inserire nella riga i corrispettivi valori che si trovano rispettivamente nelle colonne “ D-E “.
Poiché i valori importanti sono quelli che minimo hanno tre asterischi, si dovrebbe dargli una condizione che miri solamente a queste formazioni che vanno da tre in su.
Anche in questo foglio, le righe che più o meno verranno esaminate, si aggirano intorno alle 225.000.

Codice: Seleziona tutto
0051   4879   0001   Ge   0077   *         
0052   4929   0001   Ge   0049   *         
0053   4955   0001   Ge   0025   *         
0054   4958   0001   Ge   0002      Ge   0151   0002
0055   5014   0001   Ge   0055   *         
0056   5015   0001   Ge   0000            
0057   5040   0001   Ge   0024   *         
0058   5043   0001   Ge   0002            
0900   6752   0004   Ge   0043   *         
0901   6779   0004   Ge   0026   *         
0902   6891   0004   Ge   0111   *         
0903   6912   0004   Ge   0020   *         
0904   6945   0004   Ge   0032   *         
0905   7021   0004   Ge   0075   *         
0906   7023   0004   Ge   0001      Ge   0307   0001
0907   7056   0004   Ge   0032   *         
0908   7068   0004   Ge   0011            
0909   7092   0004   Ge   0023   *         
0910   7131   0004   Ge   0038   *         
0911   7132   0004   Ge   0000            
1105   6131   0005   Ge   0022   *         
1106   6179   0005   Ge   0047   *         
1107   6204   0005   Ge   0024   *         
1108   6228   0005   Ge   0023   *         
1109   6236   0005   Ge   0007      Ge   0116   0007
1110   6237   0005   Ge   0000            
1111   6244   0005   Ge   0006            
1112   6259   0005   Ge   0014            
1113   6314   0005   Ge   0054   *         
1114   6325   0005   Ge   0010            
2306   5465   0010   Ge   0019   *         
2307   5486   0010   Ge   0020   *         
2308   5507   0010   Ge   0020   *         
2309   5529   0010   Ge   0021   *         
2310   5569   0010   Ge   0039   *         
2311   5579   0010   Ge   0009      Ge   0119   0009



Come sempre, grazie per l'aiuto
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: FORMULA O MACRO

Postdi Avatar3 » 06/04/11 09:11

Non mi sono chiare alcune cose
1) Cosa riporti nella colonna H
2) come mai ci sono alcune righe vuote (senza asterisco e senza riporto di valori)

comunque ho imbastito una macro che inserisce l'asterisco in E oppure compila la colonna G e I

Codice: Seleziona tutto
Sub CompilaE()
UR = Range("A" & Rows.Count).End(xlUp).Row
Range("F1:I" & UR).ClearContents
For RR = 1 To UR
If Range("E" & RR).Value > 18 Then
    Range("F" & RR).Value = "*"
    Else
    Range("G" & RR).Value = Range("D" & RR).Value
' Range("H" & RR).Value =          <<<<<< qui dovrai mettere il valore che vuoi in H
    Range("I" & RR).Value = Range("E" & RR).Value
End If
Next RR
End Sub


Se ti è sufficiente per continuare da solo ok, altrimenti scrivi ancora

ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 13:55

Ciao Avatar, innanzi tutto grazie per l'aiuto.

Questo è quanto viene fuori dalla tua macro laddove, nella colonna " H " non ho aggiunto nulla. In questa colonna bisogna fargli fare la somma delle celle appartenenti alla colonna " E " che sono contrassegnate dall'asterisco in colonna " F ".
Quello che la macro deve esclusivamente considerare, sono tutti i valori che a partire da tre range consecutivi e non prima, abbiano superato un valore > di diciotto.

Dunque, in colonna " H " avremo solamente la somma delle tre o quattro o cinque-sei e in qualche caso anche sette-otto celle della colonna " E " che hanno un minimo di tre o quattro, cinque o sei valori consecutivi > di diciotto. Solo in questi casi la macro deve intervenire; quelli inferiori a tre non devono comparire.

Alla tua seconda domanda. La motivazione è quella in parte già spiegata: laddove manca l'asterisco sono proprio i valori che a me interessano. Infatti, le colonne " G _ H _ I " riportano i dati riscontrati dopo che, in colonna " E " si sono avuti minimo tre valori consecutivi > a diciotto.

Codice: Seleziona tutto
  A      B      C     D     E    F   G  H   I
0002   3977   0001   Ge   0027   *         
0003   3981   0001   Ge   0003      Ge      0003
0004   3990   0001   Ge   0008      Ge      0008
0005   4008   0001   Ge   0017      Ge      0017
0006   4009   0001   Ge   0000      Ge      0000
0007   4060   0001   Ge   0050   *         
0008   4082   0001   Ge   0021   *         
0009   4140   0001   Ge   0057   *         
0010   4168   0001   Ge   0027   *         
0011   4173   0001   Ge   0004      Ge      0004
0012   4180   0001   Ge   0006      Ge      0006
0013   4211   0001   Ge   0030   *         
0014   4251   0001   Ge   0039   *         
0015   4260   0001   Ge   0008      Ge      0008
0016   4282   0001   Ge   0021   *         
0017   4283   0001   Ge   0000      Ge      0000
0018   4284   0001   Ge   0000      Ge      0000
0019   4295   0001   Ge   0010      Ge      0010
0020   4305   0001   Ge   0009      Ge      0009
0021   4369   0001   Ge   0063   *         
0022   4413   0001   Ge   0043   *         
0023   4435   0001   Ge   0021   *         
0024   4486   0001   Ge   0050   *         
0025   4489   0001   Ge   0002      Ge      0002
0026   4491   0001   Ge   0001      Ge      0001
0027   4492   0001   Ge   0000      Ge      0000
0028   4493   0001   Ge   0000      Ge      0000
0029   4497   0001   Ge   0003      Ge      0003
0030   4501   0001   Ge   0003      Ge      0003
0031   4553   0001   Ge   0051   *         
0032   4567   0001   Ge   0013      Ge      0013
0033   4571   0001   Ge   0003      Ge      0003
0034   4589   0001   Ge   0017      Ge      0017
0035   4595   0001   Ge   0005      Ge      0005
0036   4596   0001   Ge   0000      Ge      0000
0037   4598   0001   Ge   0001      Ge      0001
0038   4611   0001   Ge   0012      Ge      0012
0039   4614   0001   Ge   0002      Ge      0002
0040   4616   0001   Ge   0001      Ge      0001
0041   4635   0001   Ge   0018      Ge      0018
0042   4669   0001   Ge   0033   *         
0043   4704   0001   Ge   0034   *         
0044   4720   0001   Ge   0015      Ge      0015
0045   4733   0001   Ge   0012      Ge      0012
0046   4759   0001   Ge   0025   *         
0047   4773   0001   Ge   0013      Ge      0013
0048   4781   0001   Ge   0007      Ge      0007
0049   4792   0001   Ge   0010      Ge      0010
0050   4795   0001   Ge   0002      Ge      0002
0051   4801   0001   Ge   0005      Ge      0005
0052   4879   0001   Ge   0077   *         
0053   4929   0001   Ge   0049   *         
0054   4955   0001   Ge   0025   *         
0055   4958   0001   Ge   0002      Ge   151   0002


All'ultima riga ho aggiunto il valore manualmente che è la somma delle celle in colonna " E " contrassegbate nella colonna " F " dall'asterisco che la macro deve inserire.

Ancora grazie per l'aiuto.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 14:09

Lucio Peruggini ha scritto:Ciao Avatar, innanzi tutto grazie per l'aiuto.

Questo è quanto viene fuori dalla tua macro laddove, nella colonna " H " non ho aggiunto nulla. In questa colonna bisogna fargli fare la somma delle celle appartenenti alla colonna " E " che sono contrassegnate dall'asterisco in colonna " F ".
Quello che la macro deve esclusivamente considerare, sono tutti i valori che a partire da tre range consecutivi e non prima, abbiano superato un valore > di diciotto.

Dunque, in colonna " H " avremo solamente la somma delle tre o quattro o cinque-sei e in qualche caso anche sette-otto celle della colonna " E " che hanno un minimo di tre o quattro, cinque o sei valori consecutivi > di diciotto. Solo in questi casi la macro deve intervenire; quelli inferiori a tre non devono comparire.

Alla tua seconda domanda. La motivazione è quella in parte già spiegata: laddove manca l'asterisco sono proprio i valori che a me interessano. Infatti, le colonne " G _ H _ I " riportano i dati riscontrati dopo che, in colonna " E " si sono avuti minimo tre valori consecutivi > a diciotto.

Codice: Seleziona tutto
  A      B      C     D     E    F   G  H   I
0002   3977   0001   Ge   0027   *         
0003   3981   0001   Ge   0003      Ge      0003
0004   3990   0001   Ge   0008      Ge      0008
0005   4008   0001   Ge   0017      Ge      0017
0006   4009   0001   Ge   0000      Ge      0000
0007   4060   0001   Ge   0050   *         
0008   4082   0001   Ge   0021   *         
0009   4140   0001   Ge   0057   *         
0010   4168   0001   Ge   0027   *         
0011   4173   0001   Ge   0004      Ge      0004
0012   4180   0001   Ge   0006      Ge      0006
0013   4211   0001   Ge   0030   *         
0014   4251   0001   Ge   0039   *         
0015   4260   0001   Ge   0008      Ge      0008
0016   4282   0001   Ge   0021   *         
0017   4283   0001   Ge   0000      Ge      0000
0018   4284   0001   Ge   0000      Ge      0000
0019   4295   0001   Ge   0010      Ge      0010
0020   4305   0001   Ge   0009      Ge      0009
0021   4369   0001   Ge   0063   *         
0022   4413   0001   Ge   0043   *         
0023   4435   0001   Ge   0021   *         
0024   4486   0001   Ge   0050   *         
0025   4489   0001   Ge   0002      Ge      0002
0026   4491   0001   Ge   0001      Ge      0001
0027   4492   0001   Ge   0000      Ge      0000
0028   4493   0001   Ge   0000      Ge      0000
0029   4497   0001   Ge   0003      Ge      0003
0030   4501   0001   Ge   0003      Ge      0003
0031   4553   0001   Ge   0051   *         
0032   4567   0001   Ge   0013      Ge      0013
0033   4571   0001   Ge   0003      Ge      0003
0034   4589   0001   Ge   0017      Ge      0017
0035   4595   0001   Ge   0005      Ge      0005
0036   4596   0001   Ge   0000      Ge      0000
0037   4598   0001   Ge   0001      Ge      0001
0038   4611   0001   Ge   0012      Ge      0012
0039   4614   0001   Ge   0002      Ge      0002
0040   4616   0001   Ge   0001      Ge      0001
0041   4635   0001   Ge   0018      Ge      0018
0042   4669   0001   Ge   0033   *         
0043   4704   0001   Ge   0034   *         
0044   4720   0001   Ge   0015      Ge      0015
0045   4733   0001   Ge   0012      Ge      0012
0046   4759   0001   Ge   0025   *         
0047   4773   0001   Ge   0013      Ge      0013
0048   4781   0001   Ge   0007      Ge      0007
0049   4792   0001   Ge   0010      Ge      0010
0050   4795   0001   Ge   0002      Ge      0002
0051   4801   0001   Ge   0005      Ge      0005
0052   4879   0001   Ge   0077   *         
0053   4929   0001   Ge   0049   *         
0054   4955   0001   Ge   0025   *         
0055   4958   0001   Ge   0002      Ge   151   0002


All'ultima riga ho aggiunto il valore manualmente che è la somma delle celle in colonna " E " contrassegbate nella colonna " F " dall'asterisco che la macro deve inserire.

Ancora grazie per l'aiuto.



Scusatemi, dimenticavo un fattore molto importante ai fini statistici cui questa ricerca si occupa.

Si tratta di inserire una colonna aggiuntiva " J " che conti la quantità di celle che hanno superato il >18. Quindi dovremmo avere "esempio ultima riga" quanto segue:

Ge 151 0002 0003

vale a dire che in questo ultimo caso tre ritardi contrassegnati con asterisco, hanno superato il valore >18.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Anthony47 » 06/04/11 14:28

Prova questa macro:
Codice: Seleziona tutto
Option Base 1
Sub LPCheck()
Dim ArrE, ArrF, ArrG, ArrH, ArrI, ArrJ
Dim LastR As Long, I As Long, J As Long, CAst As Long
Dim FreCol As String
'
FreCol = "Z"       '<<< Una colonna libera che sara AZZERATA
'
LastR = Cells(Rows.Count, 1).End(xlUp).Row
Range(FreCol & "1:" & FreCol & LastR).Clear
ArrE = Range("E1:E" & LastR)
ArrF = Range("Z1:Z" & LastR)
ArrG = Range("Z1:Z" & LastR)
ArrH = Range("Z1:Z" & LastR)
ArrI = Range("Z1:Z" & LastR)
ArrJ = Range("Z1:Z" & LastR)
'
For I = 1 To LastR
If ArrE(I, 1) > 18 Then
ArrF(I, 1) = "*": CAst = CAst + 1
Else:
    If CAst > 2 Then
        ArrG(I, 1) = Cells(I, 4)
        ArrI(I, 1) = Cells(I, 5)
        ArrJ(I, 1) = CAst
        For J = 1 To CAst
            ArrH(I, 1) = ArrH(I, 1) + ArrE(I - J, 1)
        Next J
        CAst = 0
    Else: CAst = 0
    End If
End If
Next I
'     Compila F:J
Range("F1:F" & LastR) = ArrF
Range("G1:G" & LastR) = ArrG
Range("H1:H" & LastR) = ArrH
Range("I1:I" & LastR) = ArrI
Range("J1:J" & LastR) = ArrJ
End Sub

Va inserita in un "Modulo" vuoto, in modo che Option Base 1 sia in testa a tutto.
Essa esamina la col E e compila le colonne F:J.
Trattandosi di 200mila e passa righe ho preferito lavorare in memoria, dovrebbe velocizzare qualche calcolo.

Usa la col Z come colonna di servizio; se Z non e' libera modifica l' istruzione marcata <<<

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

Re: FORMULA O MACRO

Postdi Avatar3 » 06/04/11 15:13

Leggi il post di Anthony

Ho apportato le modifiche alla macro precedente e la pubblico di nuovo
Codice: Seleziona tutto
Sub CompilaE()
UR = Range("A" & Rows.Count).End(xlUp).Row
Range("F1:J" & UR).ClearContents
SG = 0
SA = 0
For RR = 1 To UR
If Range("E" & RR).Value > 18 Then
    SG = SG + Range("E" & RR).Value
    SA = SA + 1
    Range("F" & RR).Value = "*"
    Else
    Range("G" & RR).Value = Range("D" & RR).Value
    If Val(SG) > 0 Then Range("H" & RR).Value = Val(SG)
    Range("I" & RR).Value = Range("E" & RR).Value
    If SA > 0 Then Range("J" & RR).Value = SA
    Columns("J:J").NumberFormat = "0000"
    SA = 0
    SG = 0
End If
Next RR
End Sub


Ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 15:39

Grazie a entrabi.

Anthony, la tua macro è perfetta oltre che velocissima!

Avatar. la tua macro mi da errore:

errore di run-time '13' tipo non corrispondente.

Ancora grazie!!!
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 16:12

Ciao Anthony, non so ma penso che si tratti del foglio excel che scarico direttamente dal programme il quale, evidentemente, non permette di inserire ne formule, ne altre cose. Ho già provato a convertire il foglio in excel 2007 ma non ho ottenuto risultati. La macro funziona benissimo ma per ottenere ciò, devo prima salvarmi l'occorrente in file txt e poi aprilo da excel.

Come noterai la colonna " H " che dovrebbe fare la somma dei contrassegnati con asterisco, anzichè sommare i risultati delle celle in questione, mi trascrive i medesimi valori però all'inverso. Posso operare in qualche modo per eliminare la probabile formattazione che mi viene da questi fogli che scarico direttamente dal programma, in modo che il tutto funzioni correttamente?

Grazie, Lucio



Codice: Seleziona tutto
0117   5939   1   Ba   20   *            
0118   5959   1   Ba   19   *            
0119   5998   1   Ba   38   *            
0120   6026   1   Ba   27   *            
0121   6028   1   Ba   1      Ba   27381920   0001   0004
0122   6033   1   Ba   4               
0123   6040   1   Ba   6               
0124   6044   1   Ba   3               
0125   6070   1   Ba   25   *            
0126   6091   1   Ba   20   *            
0127   6128   1   Ba   36   *            
0128   6131   1   Ba   2      Ba   362025   0002   0003
0129   6138   1   Ba   6               
0130   6172   1   Ba   33   *            
0131   6198   1   Ba   25   *            
0132   6211   1   Ba   12               
0133   6220   1   Ba   8               
0134   6285   1   Ba   64   *            
0135   6364   1   Ba   78   *            
0136   6393   1   Ba   28   *            
0137   6415   1   Ba   21   *            
0138   6427   1   Ba   11      Ba   21287864   0011   0004
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 16:16

Lucio Peruggini ha scritto:Ciao Anthony, non so ma penso che si tratti del foglio excel che scarico direttamente dal programme il quale, evidentemente, non permette di inserire ne formule, ne altre cose. Ho già provato a convertire il foglio in excel 2007 ma non ho ottenuto risultati. La macro funziona benissimo ma per ottenere ciò, devo prima salvarmi l'occorrente in file txt e poi aprilo da excel.

Come noterai la colonna " H " che dovrebbe fare la somma dei contrassegnati con asterisco, anzichè sommare i risultati delle celle in questione, mi trascrive i medesimi valori però all'inverso. Posso operare in qualche modo per eliminare la probabile formattazione che mi viene da questi fogli che scarico direttamente dal programma, in modo che il tutto funzioni correttamente?

Grazie, Lucio



Codice: Seleziona tutto
0117   5939   1   Ba   20   *            
0118   5959   1   Ba   19   *            
0119   5998   1   Ba   38   *            
0120   6026   1   Ba   27   *            
0121   6028   1   Ba   1      Ba   27381920   0001   0004
0122   6033   1   Ba   4               
0123   6040   1   Ba   6               
0124   6044   1   Ba   3               
0125   6070   1   Ba   25   *            
0126   6091   1   Ba   20   *            
0127   6128   1   Ba   36   *            
0128   6131   1   Ba   2      Ba   362025   0002   0003
0129   6138   1   Ba   6               
0130   6172   1   Ba   33   *            
0131   6198   1   Ba   25   *            
0132   6211   1   Ba   12               
0133   6220   1   Ba   8               
0134   6285   1   Ba   64   *            
0135   6364   1   Ba   78   *            
0136   6393   1   Ba   28   *            
0137   6415   1   Ba   21   *            
0138   6427   1   Ba   11      Ba   21287864   0011   0004


Scusa dimenticavo un piccolo particolare: Si può non fargli inserire gli asterischi che non riguardano la statistica in questione? Vale a dire, inserire solamente gli asterischi sulle formazioni che vanno da tre in su.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Avatar3 » 06/04/11 16:52

Forse dipenderà dalla versione di excel

Ti invio il file
http://uploading.com/files/26fmc532/CompilaTab.xls/
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 06/04/11 20:03

Ciao Avatar, ho visto che funziona anche il tuo; può essere una questione giustamente di versioni differenti.

Grazie per l'aiuto.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Avatar3 » 06/04/11 20:22

Lucio Peruggini ha scritto: ho visto che funziona anche il tuo; può essere una questione giustamente di versioni differenti


:?:
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: FORMULA O MACRO

Postdi Anthony47 » 06/04/11 22:31

A questo punto non so dove sei arrivato e se il problema e' risolto o no.
Per quanto riguarda la col H, se invece della somma hai il concatenamento dei valori e' perche' in col E hai delle stringhe e non dei numeri.
Con la mia macro dovresti risolverla usando ArrH(I, 1) = ArrH(I, 1) + Val(ArrE(I - J, 1)) (invece che ArrH(I, 1) = ArrH(I, 1) + ArrE(I - J, 1))

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

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 07/04/11 18:37

Ciao Anthony, come sempre funziona tutto a meraviglia.
Ho apportato la modifica da te consigliata ed è OK!!!!

Grazie di cuore, Lucio
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 08/04/11 13:53

Ciao Anthony
è possibile in colonna " H " sommargli anche l'ultimo numero del concatenamento trovato?

Esempio:

Codice: Seleziona tutto
4030   4028   0018   Ca   0027   *            
4031   4035   0018   Ca   0072   *            
4032   4055   0018   Ca   0065   *            
4033   4120   0018   Ca   0030   *            
4034   4150   0018   Ca   0013      Ca   0194   0013   0004


Anziché 194 avremmo 207.

Saluti
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Anthony47 » 08/04/11 14:03

Dovrebbe essere sufficiente modificare la riga For J = 1 To CAst in
Codice: Seleziona tutto
For J = 0 To CAst

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

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 08/04/11 14:10

Perfetto, grazie!
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 08/04/11 22:23

C'è un inconveniente che spero si possa risolvere.

Poiché ho dovuto per forza di cose concatenare tutti questi eventi numero dopo numero e con tutte la ruote (10), ovviamente la macro mi prende in sequenza tutto ciò che trova a gruppi di (tre, quattro, cinque ecc.) svolgendo egregiamente il proprio lavoro. L'inconveniente sorge quando c'è un cambio di ruota; questo è un grosso inghippo che non avevo previsto!

Codice: Seleziona tutto
49306   8224   0021   Fi   0029   *            
49307   8253   0021   Fi   0033   *            
49308   8286   0021   Fi   0037   *            
49309   8323   0021   Fi   0031   *            
49310   3978   0021   Ge   0013      Ge   0143   0013   0004
                           
                           
49306   8224   0021   Fi   0029   *            
49307   8253   0021   Fi   0033   *            
49308   8286   0021   Fi   0037   *            
49309   8323   0021   Fi   0031      Fi   0130   0031   0003
49310   3978   0021   Ge   0013                        


In pratica, con il cambio di ruota la macro deve riconoscere questa evenienza e laddove trova dei casi di questo tipo, fermarsi dove la ruota finisce e ne inizia un altra; contegiando la ruota che effettivamente possiede le caratteristiche desiderate.
Purtroppo, di questi eventi ne ho correti moltissimi; ma è troppo lungo ripassarmi 220.000 righe.

Sopra è così come viene dalla macro, sotto è corretto come deve venire.

Grazie per l'aiuto e mi auguro si possa risolvere anche questo scoglio.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Lucio Peruggini » 08/04/11 22:37

Lucio Peruggini ha scritto:C'è un inconveniente che spero si possa risolvere.

Poiché ho dovuto per forza di cose concatenare tutti questi eventi numero dopo numero e con tutte la ruote (10), ovviamente la macro mi prende in sequenza tutto ciò che trova a gruppi di (tre, quattro, cinque ecc.) svolgendo egregiamente il proprio lavoro. L'inconveniente sorge quando c'è un cambio di ruota; questo è un grosso inghippo che non avevo previsto!

Codice: Seleziona tutto
49306   8224   0021   Fi   0029   *            
49307   8253   0021   Fi   0033   *            
49308   8286   0021   Fi   0037   *            
49309   8323   0021   Fi   0031   *            
49310   3978   0021   Ge   0013      Ge   0143   0013   0004
                           
                           
49306   8224   0021   Fi   0029   *            
49307   8253   0021   Fi   0033   *            
49308   8286   0021   Fi   0037   *            
49309   8323   0021   Fi   0031      Fi   0130   0031   0003
49310   3978   0021   Ge   0013                        


In pratica, con il cambio di ruota la macro deve riconoscere questa evenienza e laddove trova dei casi di questo tipo, fermarsi dove la ruota finisce e ne inizia un altra; contegiando la ruota che effettivamente possiede le caratteristiche desiderate.
Purtroppo, di questi eventi ne ho correti moltissimi; ma è troppo lungo ripassarmi 220.000 righe.

Sopra è così come viene dalla macro, sotto è corretto come deve venire.

Grazie per l'aiuto e mi auguro si possa risolvere anche questo scoglio.



Codice: Seleziona tutto
68124   8317   0029   Ca   0011               
68125   8328   0029   Ca   0005               
68126   8333   0029   Ca   0021   *            
68127   3951   0029   Fi   0026   *            
68128   3977   0029   Fi   0022   *            
68129   3999   0029   Fi   0040   *            
68130   4039   0029   Fi   0035   *            
68131   4074   0029   Fi   0001      Fi   0145   0001   0005
                           
                           
68124   8317   0029   Ca   0011               
68125   8328   0029   Ca   0005               
68126   8333   0029   Ca   0021               
68127   3951   0029   Fi   0026   *            
68128   3977   0029   Fi   0022   *            
68129   3999   0029   Fi   0040   *            
68130   4039   0029   Fi   0035   *            
68131   4074   0029   Fi   0001      Fi   0124   0001   0004



Quest'altro esempio è l'inverso del precedente: Somma anche un evento della ruota precedente.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: FORMULA O MACRO

Postdi Anthony47 » 08/04/11 23:37

Non mi e' chiaro cosa fare al cambio di ruota, se cioe' fare un riepilogo solo con la presenza di 3 asterischi nelle righe precedenti o se il riepilogo lo si fa sempre prima di ripartire.
Se e' buona la prima allora cambia questa istruzione
Codice: Seleziona tutto
For I = 1 To LastR
If ArrE(I, 1) > 18 And Cells(I, 4) = Cells(I + 1, 4) Then    '<<MODIFICATA
ArrF(I, 1) = "*": CAst = CAst + 1
Else:
    If CAst > 2 Then
'etc etc

Se invece e' buona la seconda allora modifica anche il secondo If:
Codice: Seleziona tutto
    If CAst > 2 Or Cells(I, 4) <> Cells(I + 1, 4) Then    '<<Anche MODIFICATA

I dati non dovrebbero avere righe vuote, nemmeno al cambio di ruota, altrimenti la soluzione 2 inserisce dei riepiloghi spuri.

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "FORMULA O MACRO":


Chi c’è in linea

Visitano il forum: raimea e 82 ospiti