Aiuto per macro



  • Aiuto per macro
    di Ludagi data: 02/07/2012

    Ho un foglio di excel con 2 colonne :

    colonna a: dove sono dei prezzi

    colonna b: dove vi sono i volumi relativi ai prezzi di colonna a.

    nella colanna a vi possono essere anche valori ripetitivi.

    il calcolo che mi serve è calcolare la somma dei volumi di colonna b corrispondente ai singoli valori di colonna a e come risultato finale mettere in evidenza su che valore di colonna a si è avuto il massimo della somma corrispondente di colonna b ed il valore di tale massimo .







  • di Patel (utente non iscritto) data: 02/07/2012

    Allega un esempio del file con il risultato di come lo vorresti



  • di Ludagi (utente non iscritto) data: 02/07/2012

    Ho mandato un allegato



  • di Patel (utente non iscritto) data: 02/07/2012

    Hai provato ad ordinare per prezzo e inserire i subtotali ?



  • di Ludagi (utente non iscritto) data: 03/07/2012

    Manualmente so fare .... ma mi serve una macro che esegue in automatico il procedimento e mi dia il risultato finale ... cioè quale prezzo ha accumulato il maggior volune ed il valore di tale volume ....

    pure con una tabella pivot si ottiene la somma dei volumi per ogni prezzo ....... ma la mia tabella è dinamica ...quindi mi serve una macro in continua esecuzione che mi deve aggiornare in continuazione il risultato........grazie



  • di Patel (utente non iscritto) data: 03/07/2012

    Controlla se questa macro ti soddisfa almeno in parte

     
    Sub ElencoUnivoco()
    '    inizializzazione delle variabili di servizio
    Dim Intervallo As Range, IntervDest As Range
    Dim Elenco As New Collection
    Dim Righe, R, Riga, A, R1
    Set Intervallo = Range("A1").CurrentRegion
    Set Intervallo = Intervallo.Offset(1, 0).Resize(Intervallo.Rows.Count - 1, _
        Intervallo.Columns.Count)
    Set IntervDest = Intervallo.Offset(0, Intervallo.Columns.Count + 1)
    IntervDest.ClearContents '    cancello eventuali dati residui da precedenti manovre
    Righe = Intervallo.Rows.Count
    On Error Resume Next
    For R = 1 To Righe
    Elenco.Add R, CStr(Intervallo(R, 1).Value)
    Next
    On Error GoTo 0
    For R = 1 To Elenco.Count
      Riga = Elenco(R)
        IntervDest(R, 1) = Intervallo(Riga, 1)
      volume = Intervallo(Riga, 2)
      For R1 = Riga + 1 To Righe
        If Intervallo(Riga, 1) = Intervallo(R1, 1) Then
           volume = volume + Intervallo(R1, 2)
        End If
      Next
      IntervDest(R, 2) = volume
    Next
    End Sub
    



  • di Ludagi (utente non iscritto) data: 04/07/2012

    Grazie... funziona bene.

    i dati da elaborare provengono da un collegamento in dde da una banca che con un'altra macro mi aggiunge una riga ogni qualvolta vi è una variazione di volume ... adesso devo vedere come inserire questa macro per mettere in evidenza in una cella del foglio di lavoro il prezzo a cui è associato il maggior volume di scambio.

    in attesa di uleriori suggerimenti ringrazio tanto...




  • di Patel (utente non iscritto) data: 04/07/2012

    La macro postata non trova ancora il max volume, dimmi se funziona e poi aggigungo il max



  • di Ludagi (utente non iscritto) data: 04/07/2012

    Si funziona .. grazie



  • di Patel (utente non iscritto) data: 04/07/2012

    Questa è la definitiva
     
    Sub ElencoUnivoco()
    Dim Intervallo As Range, IntervDest As Range
    Dim Elenco As New Collection
    Dim Righe, R, Riga, A, R1
    Set Intervallo = Range("A1").CurrentRegion
    Set Intervallo = Intervallo.Offset(1, 0).Resize(Intervallo.Rows.Count - 1, _
        Intervallo.Columns.Count)
    Set IntervDest = Intervallo.Offset(0, Intervallo.Columns.Count + 1)
    IntervDest.ClearContents 
    Righe = Intervallo.Rows.Count
    On Error Resume Next
    For R = 1 To Righe
    Elenco.Add R, CStr(Intervallo(R, 1).Value)
    Next
    On Error GoTo 0
    maxvolume = 0
    For R = 1 To Elenco.Count
      Riga = Elenco(R)
        IntervDest(R, 1) = Intervallo(Riga, 1)
      volume = Intervallo(Riga, 2)
      For R1 = Riga + 1 To Righe
        If Intervallo(Riga, 1) = Intervallo(R1, 1) Then
           volume = volume + Intervallo(R1, 2)
        End If
      Next
      IntervDest(R, 2) = volume
      If volume > maxvolume Then
        maxvolume = volume
        rigamax = R
      End If
    Next
    Cells(2, 6).Value = "Volume max"
    Cells(2, 7).Value = maxvolume
    Cells(3, 6).Value = "Prezzo"
    Cells(3, 7).Value = IntervDest(rigamax, 1)
    End Sub
    



  • di Ludagi (utente non iscritto) data: 04/07/2012

    Perfetto ...grazie tanto


    adesso dovrei rendere tutto dinamico in quanto questi risultati possono variare man mano che si fanno gli scambi ...forse basta lanciare questa macro ..all'interno della macro di aggiornamento dati ....provero' ...grazie infiniti


  • Ludagi
    di Ludagi data: 09/07/2012

    Ancora un aiuto ... sicome devo adattare la macro ...mi sarebbe di aiuto un commento di significato alle righe della macro ..in modo che possa modificarla al mio caso ...grazie



  • di Patel (utente non iscritto) data: 09/07/2012

    Indicami le righe che ti rimangono oscure


  • Ludagi
    di Ludagi data: 09/07/2012

    Principalmente tutte le righe con set



  • di Patel (utente non iscritto) data: 09/07/2012

    Premesso che ci sono vari modi per ottenere lo stesso risultato
    set intervallo = range("a1").currentregion
    imposta un range che parte da a1 e comprende tutta l'area adiacente non vuota, quindi i tuoi dati di partenza

    set intervallo = intervallo.offset(1, 0).resize(intervallo.rows.count - 1, _
    intervallo.columns.count)

    esclude dal range di cui sopra la prima riga, cioè l'intestazione

    set intervdest = intervallo.offset(0, intervallo.columns.count + 1)

    definisce in range di dimensioni = a intevallo, ma spostato di una colonna



  • di Patel (utente non iscritto) data: 09/07/2012

    Per rendertene conto puoi modificare il codice in questo modo ed utilizzare f8 per analizzare i vari step
     
    Set Intervallo = Range("A1").CurrentRegion
    Intervallo.select
    Set Intervallo = Intervallo.Offset(1, 0).Resize(Intervallo.Rows.Count - 1, _
        Intervallo.Columns.Count)
    Intervallo.select
    Set IntervDest = Intervallo.Offset(0, Intervallo.Columns.Count + 1)
    IntervDest.select


  • Ludagi
    di Ludagi data: 09/07/2012

    Troppo difficile ........ grazie



  • di Patel (utente non iscritto) data: 09/07/2012

    Non è difficile come pensi, in quelle istruzioni le cose da cambiare sono
    a1 per cambiare colonna
    +1 di set intervdest = intervallo.offset(0, intervallo.columns.count + 1)
    per spostare il range di destinazione


  • Ludagi
    di Ludagi data: 10/07/2012

    Il mio caso è che la colonna a puo' essere una qualsiasi come la colonna b ed anche il range di destinazione quindi non so modificare ... la macro al mio caso ...



  • di Patel (utente non iscritto) data: 10/07/2012

    Fai un esempio pratico e te lo dimostro, è più facile di quanto tu creda


  • Ludagi
    di Ludagi data: 10/07/2012

    Allora la tabella prezzi si trova nella colonna b ed inizia da b11 ..la tabella volumi si trova nella colonna h ed inizia da h11 ..il risultato della macro deve essere a partire dalla colonna ah perche' le colonne precedenti sono gia' impegnate ...grazie



  • di Patel (utente non iscritto) data: 10/07/2012

    Non potevi dirlo subito ? la macro che ti ho proposto è basata sulla contiguità delle colonne prezzi-volumi, quindi non può essere modificata con facilità



  • di Patel (utente non iscritto) data: 10/07/2012

    In conclusione occorre il foglio completo per vedere come è composto


  • Ludagi
    di Ludagi data: 11/07/2012

    Allora ho tentato di risolvere il problema registrando una macro che copia il prezzo ed il volume in un foglio aggiuntivo e su questa macro ho aggiunto la macro per il calcolo .. ottengo il risultato anche se molto rappezzato ..... allego la macro ... il foglio principale si chiama "mini" il foglio aggiuntivo "foglio1" ... poi ci sarebbe una condizione su quante righe copiare ....
     
    Sub PVP()
    '
    ' Macro2 Macro
    ' Macro registrata il 11/07/2012 da luigi
    '
    
    '
        ActiveWindow.SmallScroll Down:=3
        Range("B10").Select
        Range(Selection, Selection.End(xlDown)).Select
        ActiveWindow.SmallScroll Down:=15
        ActiveWindow.ScrollRow = 1875
        ActiveWindow.ScrollRow = 1914
        ActiveWindow.ScrollRow = 2009
        ActiveWindow.ScrollRow = 2124
        ActiveWindow.ScrollRow = 2201
        ActiveWindow.ScrollRow = 2315
        ActiveWindow.ScrollRow = 2411
        ActiveWindow.ScrollRow = 2488
        ActiveWindow.ScrollRow = 2564
        ActiveWindow.ScrollRow = 2660
        ActiveWindow.ScrollRow = 2698
        ActiveWindow.ScrollRow = 2774
        ActiveWindow.ScrollRow = 2832
        ActiveWindow.ScrollRow = 2889
        ActiveWindow.ScrollRow = 2928
        ActiveWindow.ScrollRow = 2985
        ActiveWindow.ScrollRow = 3023
        ActiveWindow.ScrollRow = 3081
        ActiveWindow.ScrollRow = 3138
        ActiveWindow.ScrollRow = 3176
        ActiveWindow.ScrollRow = 3234
        ActiveWindow.ScrollRow = 3272
        ActiveWindow.ScrollRow = 3329
        ActiveWindow.ScrollRow = 3367
        ActiveWindow.ScrollRow = 3425
        ActiveWindow.ScrollRow = 3463
        ActiveWindow.ScrollRow = 3520
        ActiveWindow.ScrollRow = 3578
        ActiveWindow.ScrollRow = 3654
        ActiveWindow.ScrollRow = 3712
        ActiveWindow.ScrollRow = 3750
        ActiveWindow.ScrollRow = 3807
        ActiveWindow.ScrollRow = 3884
        ActiveWindow.ScrollRow = 3960
        ActiveWindow.ScrollRow = 4018
        ActiveWindow.ScrollRow = 4075
        ActiveWindow.ScrollRow = 4094
        ActiveWindow.ScrollRow = 4133
        ActiveWindow.ScrollRow = 4190
        ActiveWindow.ScrollRow = 4266
        ActiveWindow.ScrollRow = 4324
        ActiveWindow.ScrollRow = 4362
        ActiveWindow.ScrollRow = 4439
        ActiveWindow.ScrollRow = 4496
        ActiveWindow.ScrollRow = 4515
        ActiveWindow.ScrollRow = 4534
        ActiveWindow.ScrollRow = 4553
        ActiveWindow.ScrollRow = 4630
        ActiveWindow.ScrollRow = 4725
        ActiveWindow.ScrollRow = 4840
        ActiveWindow.ScrollRow = 4917
        ActiveWindow.ScrollRow = 4993
        ActiveWindow.ScrollRow = 5070
        ActiveWindow.ScrollRow = 5165
        ActiveWindow.ScrollRow = 5204
        ActiveWindow.ScrollRow = 5280
        ActiveWindow.ScrollRow = 5299
        ActiveWindow.ScrollRow = 5357
        ActiveWindow.ScrollRow = 5395
        ActiveWindow.ScrollRow = 5452
        ActiveWindow.ScrollRow = 5529
        ActiveWindow.ScrollRow = 5586
        ActiveWindow.ScrollRow = 5663
        ActiveWindow.ScrollRow = 5739
        ActiveWindow.ScrollRow = 5816
        ActiveWindow.ScrollRow = 5873
        ActiveWindow.ScrollRow = 5911
        ActiveWindow.ScrollRow = 6007
        ActiveWindow.ScrollRow = 6026
        ActiveWindow.ScrollRow = 6064
        ActiveWindow.ScrollRow = 6122
        ActiveWindow.ScrollRow = 6141
        ActiveWindow.ScrollRow = 6160
        ActiveWindow.ScrollRow = 6179
        ActiveWindow.ScrollRow = 6237
        ActiveWindow.ScrollRow = 6256
        ActiveWindow.ScrollRow = 6294
        ActiveWindow.ScrollRow = 6351
        ActiveWindow.ScrollRow = 6390
        ActiveWindow.ScrollRow = 6485
        ActiveWindow.ScrollRow = 6523
        ActiveWindow.ScrollRow = 6696
        ActiveWindow.ScrollRow = 6772
        ActiveWindow.ScrollRow = 6963
        ActiveWindow.ScrollRow = 7116
        ActiveWindow.ScrollRow = 7289
        ActiveWindow.ScrollRow = 7442
        ActiveWindow.ScrollRow = 7499
        ActiveWindow.ScrollRow = 7537
        ActiveWindow.ScrollRow = 7575
        ActiveWindow.ScrollRow = 7595
        ActiveWindow.ScrollRow = 7614
        ActiveWindow.ScrollRow = 7633
        ActiveWindow.ScrollRow = 7652
        ActiveWindow.ScrollRow = 7671
        Range("B10:B7695").Select
        Selection.Copy
        Sheets("Foglio1").Select
        ActiveSheet.Paste
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("mini").Select
        Range("R10").Select
        Range(Selection, Selection.End(xlDown)).Select
        ActiveWindow.SmallScroll Down:=144
        ActiveWindow.ScrollRow = 1971
        ActiveWindow.ScrollRow = 1990
        ActiveWindow.ScrollRow = 2009
        ActiveWindow.ScrollRow = 2048
        ActiveWindow.ScrollRow = 2067
        ActiveWindow.ScrollRow = 2124
        ActiveWindow.ScrollRow = 2182
        ActiveWindow.ScrollRow = 2201
        ActiveWindow.ScrollRow = 2239
        ActiveWindow.ScrollRow = 2258
        ActiveWindow.ScrollRow = 2296
        ActiveWindow.ScrollRow = 2335
        ActiveWindow.ScrollRow = 2354
        ActiveWindow.ScrollRow = 2411
        ActiveWindow.ScrollRow = 2430
        ActiveWindow.ScrollRow = 2449
        ActiveWindow.ScrollRow = 2468
        ActiveWindow.ScrollRow = 2488
        ActiveWindow.ScrollRow = 2507
        ActiveWindow.ScrollRow = 2526
        ActiveWindow.ScrollRow = 2545
        ActiveWindow.ScrollRow = 2583
        ActiveWindow.ScrollRow = 2621
        ActiveWindow.ScrollRow = 2641
        ActiveWindow.ScrollRow = 2660
        ActiveWindow.ScrollRow = 2679
        ActiveWindow.ScrollRow = 2717
        ActiveWindow.ScrollRow = 2736
        ActiveWindow.ScrollRow = 2755
        ActiveWindow.ScrollRow = 2774
        ActiveWindow.ScrollRow = 2794
        ActiveWindow.ScrollRow = 2813
        ActiveWindow.ScrollRow = 2832
        ActiveWindow.ScrollRow = 2870
        ActiveWindow.ScrollRow = 2889
        ActiveWindow.ScrollRow = 2928
        ActiveWindow.ScrollRow = 2947
        ActiveWindow.ScrollRow = 2966
        ActiveWindow.ScrollRow = 3004
        ActiveWindow.ScrollRow = 3042
        ActiveWindow.ScrollRow = 3061
        ActiveWindow.ScrollRow = 3081
        ActiveWindow.ScrollRow = 3100
        ActiveWindow.ScrollRow = 3119
        ActiveWindow.ScrollRow = 3157
        ActiveWindow.ScrollRow = 3176
        ActiveWindow.ScrollRow = 3195
        ActiveWindow.ScrollRow = 3214
        ActiveWindow.ScrollRow = 3234
        ActiveWindow.ScrollRow = 3253
        ActiveWindow.ScrollRow = 3272
        ActiveWindow.ScrollRow = 3310
        ActiveWindow.ScrollRow = 3329
        ActiveWindow.ScrollRow = 3348
        ActiveWindow.ScrollRow = 3387
        ActiveWindow.ScrollRow = 3406
        ActiveWindow.ScrollRow = 3444
        ActiveWindow.ScrollRow = 3463
        ActiveWindow.ScrollRow = 3501
        ActiveWindow.ScrollRow = 3520
        ActiveWindow.ScrollRow = 3578
        ActiveWindow.ScrollRow = 3597
        ActiveWindow.ScrollRow = 3635
        ActiveWindow.ScrollRow = 3654
        ActiveWindow.ScrollRow = 3712
        ActiveWindow.ScrollRow = 3750
        ActiveWindow.ScrollRow = 3769
        ActiveWindow.ScrollRow = 3807
        ActiveWindow.ScrollRow = 3827
        ActiveWindow.ScrollRow = 3846
        ActiveWindow.ScrollRow = 3884
        ActiveWindow.ScrollRow = 3903
        ActiveWindow.ScrollRow = 3960
        ActiveWindow.ScrollRow = 3999
        ActiveWindow.ScrollRow = 4056
        ActiveWindow.ScrollRow = 4113
        ActiveWindow.ScrollRow = 4152
        ActiveWindow.ScrollRow = 4209
        ActiveWindow.ScrollRow = 4247
        ActiveWindow.ScrollRow = 4305
        ActiveWindow.ScrollRow = 4362
        ActiveWindow.ScrollRow = 4400
        ActiveWindow.ScrollRow = 4458
        ActiveWindow.ScrollRow = 4515
        ActiveWindow.ScrollRow = 4534
        ActiveWindow.ScrollRow = 4572
        ActiveWindow.ScrollRow = 4630
        ActiveWindow.ScrollRow = 4649
        ActiveWindow.ScrollRow = 4668
        ActiveWindow.ScrollRow = 4706
        ActiveWindow.ScrollRow = 4725
        ActiveWindow.ScrollRow = 4783
        ActiveWindow.ScrollRow = 4821
        ActiveWindow.ScrollRow = 4859
        ActiveWindow.ScrollRow = 4879
        ActiveWindow.ScrollRow = 4917
        ActiveWindow.ScrollRow = 4936
        ActiveWindow.ScrollRow = 4993
        ActiveWindow.ScrollRow = 5012
        ActiveWindow.ScrollRow = 5051
        ActiveWindow.ScrollRow = 5070
        ActiveWindow.ScrollRow = 5108
        ActiveWindow.ScrollRow = 5127
        ActiveWindow.ScrollRow = 5146
        ActiveWindow.ScrollRow = 5165
        ActiveWindow.ScrollRow = 5185
        ActiveWindow.ScrollRow = 5204
        ActiveWindow.ScrollRow = 5223
        ActiveWindow.ScrollRow = 5261
        ActiveWindow.ScrollRow = 5280
        ActiveWindow.ScrollRow = 5318
        ActiveWindow.ScrollRow = 5338
        ActiveWindow.ScrollRow = 5395
        ActiveWindow.ScrollRow = 5414
        ActiveWindow.ScrollRow = 5452
        ActiveWindow.ScrollRow = 5510
        ActiveWindow.ScrollRow = 5567
        ActiveWindow.ScrollRow = 5586
        ActiveWindow.ScrollRow = 5624
        ActiveWindow.ScrollRow = 5682
        ActiveWindow.ScrollRow = 5720
        ActiveWindow.ScrollRow = 5778
        ActiveWindow.ScrollRow = 5835
        ActiveWindow.ScrollRow = 5873
        ActiveWindow.ScrollRow = 5931
        ActiveWindow.ScrollRow = 5950
        ActiveWindow.ScrollRow = 5988
        ActiveWindow.ScrollRow = 6045
        ActiveWindow.ScrollRow = 6103
        ActiveWindow.ScrollRow = 6122
        ActiveWindow.ScrollRow = 6160
        ActiveWindow.ScrollRow = 6217
        ActiveWindow.ScrollRow = 6237
        ActiveWindow.ScrollRow = 6256
        ActiveWindow.ScrollRow = 6275
        ActiveWindow.ScrollRow = 6294
        ActiveWindow.ScrollRow = 6351
        ActiveWindow.ScrollRow = 6370
        ActiveWindow.ScrollRow = 6409
        ActiveWindow.ScrollRow = 6428
        ActiveWindow.ScrollRow = 6447
        ActiveWindow.ScrollRow = 6485
        ActiveWindow.ScrollRow = 6504
        ActiveWindow.ScrollRow = 6523
        ActiveWindow.ScrollRow = 6543
        ActiveWindow.ScrollRow = 6562
        ActiveWindow.ScrollRow = 6581
        ActiveWindow.ScrollRow = 6600
        ActiveWindow.ScrollRow = 6638
        ActiveWindow.ScrollRow = 6696
        ActiveWindow.ScrollRow = 6715
        ActiveWindow.ScrollRow = 6734
        ActiveWindow.ScrollRow = 6772
        ActiveWindow.ScrollRow = 6810
        ActiveWindow.ScrollRow = 6868
        ActiveWindow.ScrollRow = 6925
        ActiveWindow.ScrollRow = 6963
        ActiveWindow.ScrollRow = 7021
        ActiveWindow.ScrollRow = 7059
        ActiveWindow.ScrollRow = 7155
        ActiveWindow.ScrollRow = 7193
        ActiveWindow.ScrollRow = 7250
        ActiveWindow.ScrollRow = 7327
        ActiveWindow.ScrollRow = 7384
        ActiveWindow.ScrollRow = 7442
        ActiveWindow.ScrollRow = 7480
        ActiveWindow.ScrollRow = 7537
        ActiveWindow.ScrollRow = 7575
        ActiveWindow.ScrollRow = 7595
        ActiveWindow.ScrollRow = 7652
        ActiveWindow.ScrollRow = 7690
        ActiveWindow.ScrollRow = 7709
        ActiveWindow.ScrollRow = 7767
        ActiveWindow.ScrollRow = 7786
        ActiveWindow.ScrollRow = 7805
        ActiveWindow.ScrollRow = 7824
        ActiveWindow.ScrollRow = 7843
        ActiveWindow.ScrollRow = 7882
        ActiveWindow.ScrollRow = 7901
        ActiveWindow.ScrollRow = 7920
        ActiveWindow.ScrollRow = 7939
        ActiveWindow.ScrollRow = 7958
        ActiveWindow.ScrollRow = 7977
        ActiveWindow.ScrollRow = 7996
        ActiveWindow.ScrollRow = 8054
        ActiveWindow.ScrollRow = 8073
        ActiveWindow.ScrollRow = 8111
        ActiveWindow.ScrollRow = 8207
        ActiveWindow.ScrollRow = 8245
        ActiveWindow.ScrollRow = 8302
        ActiveWindow.ScrollRow = 8321
        ActiveWindow.ScrollRow = 8360
        ActiveWindow.ScrollRow = 8398
        ActiveWindow.ScrollRow = 8436
        ActiveWindow.ScrollRow = 8455
        ActiveWindow.ScrollRow = 8494
        ActiveWindow.ScrollRow = 8532
        ActiveWindow.ScrollRow = 8551
        ActiveWindow.ScrollRow = 8570
        ActiveWindow.ScrollRow = 8589
        ActiveWindow.ScrollRow = 8608
        ActiveWindow.ScrollRow = 8628
        ActiveWindow.ScrollRow = 8647
        ActiveWindow.ScrollRow = 8685
        ActiveWindow.ScrollRow = 8723
        ActiveWindow.ScrollRow = 8781
        ActiveWindow.ScrollRow = 8819
        ActiveWindow.ScrollRow = 8876
        ActiveWindow.ScrollRow = 8895
        ActiveWindow.ScrollRow = 8914
        ActiveWindow.ScrollRow = 8934
        ActiveWindow.ScrollRow = 8953
        ActiveWindow.ScrollRow = 8991
        ActiveWindow.ScrollRow = 9010
        ActiveWindow.ScrollRow = 9029
        ActiveWindow.ScrollRow = 9048
        ActiveWindow.ScrollRow = 9067
        ActiveWindow.ScrollRow = 9087
        ActiveWindow.ScrollRow = 9144
        ActiveWindow.ScrollRow = 9163
        ActiveWindow.ScrollRow = 9182
        ActiveWindow.ScrollRow = 9201
        ActiveWindow.ScrollRow = 9220
        ActiveWindow.ScrollRow = 9240
        ActiveWindow.ScrollRow = 9297
        ActiveWindow.ScrollRow = 9316
        ActiveWindow.ScrollRow = 9335
        ActiveWindow.ScrollRow = 9354
        ActiveWindow.ScrollRow = 9373
        ActiveWindow.ScrollRow = 9393
        ActiveWindow.ScrollRow = 9431
        ActiveWindow.ScrollRow = 9450
        ActiveWindow.ScrollRow = 9469
        ActiveWindow.ScrollRow = 9488
        ActiveWindow.ScrollRow = 9450
        ActiveWindow.ScrollRow = 9431
        ActiveWindow.ScrollRow = 9354
        ActiveWindow.ScrollRow = 9316
        ActiveWindow.ScrollRow = 9259
        ActiveWindow.ScrollRow = 9220
        ActiveWindow.ScrollRow = 9163
        ActiveWindow.ScrollRow = 9144
        ActiveWindow.ScrollRow = 9125
        ActiveWindow.ScrollRow = 9106
        ActiveWindow.ScrollRow = 9087
        ActiveWindow.ScrollRow = 9048
        ActiveWindow.ScrollRow = 9029
        ActiveWindow.ScrollRow = 9010
        ActiveWindow.ScrollRow = 8972
        ActiveWindow.ScrollRow = 8953
        ActiveWindow.ScrollRow = 8934
        ActiveWindow.ScrollRow = 8914
        ActiveWindow.ScrollRow = 8895
        ActiveWindow.ScrollRow = 8876
        ActiveWindow.ScrollRow = 8857
        ActiveWindow.ScrollRow = 8819
        ActiveWindow.ScrollRow = 8800
        ActiveWindow.ScrollRow = 8781
        ActiveWindow.ScrollRow = 8761
        ActiveWindow.ScrollRow = 8742
        ActiveWindow.ScrollRow = 8723
        ActiveWindow.ScrollRow = 8704
        ActiveWindow.ScrollRow = 8666
        ActiveWindow.ScrollRow = 8647
        ActiveWindow.ScrollRow = 8628
        ActiveWindow.ScrollRow = 8608
        ActiveWindow.ScrollRow = 8589
        ActiveWindow.ScrollRow = 8570
        ActiveWindow.ScrollRow = 8551
        ActiveWindow.ScrollRow = 8513
        ActiveWindow.ScrollRow = 8494
        ActiveWindow.ScrollRow = 8474
        ActiveWindow.ScrollRow = 8455
        ActiveWindow.ScrollRow = 8436
        ActiveWindow.ScrollRow = 8417
        ActiveWindow.ScrollRow = 8398
        ActiveWindow.ScrollRow = 8379
        ActiveWindow.ScrollRow = 8341
        ActiveWindow.ScrollRow = 8321
        ActiveWindow.ScrollRow = 8302
        ActiveWindow.ScrollRow = 8283
        ActiveWindow.ScrollRow = 8264
        ActiveWindow.ScrollRow = 8245
        ActiveWindow.ScrollRow = 8226
        ActiveWindow.ScrollRow = 8188
        ActiveWindow.ScrollRow = 8149
        ActiveWindow.ScrollRow = 8111
        ActiveWindow.ScrollRow = 8092
        ActiveWindow.ScrollRow = 8073
        ActiveWindow.ScrollRow = 8054
        ActiveWindow.ScrollRow = 8035
        ActiveWindow.ScrollRow = 8015
        ActiveWindow.ScrollRow = 7996
        ActiveWindow.ScrollRow = 7958
        ActiveWindow.ScrollRow = 7939
        ActiveWindow.ScrollRow = 7920
        ActiveWindow.ScrollRow = 7901
        ActiveWindow.ScrollRow = 7882
        ActiveWindow.ScrollRow = 7862
        ActiveWindow.ScrollRow = 7843
        ActiveWindow.ScrollRow = 7805
        ActiveWindow.ScrollRow = 7786
        ActiveWindow.ScrollRow = 7767
        ActiveWindow.ScrollRow = 7748
        ActiveWindow.ScrollRow = 7709
        ActiveWindow.ScrollRow = 7690
        ActiveWindow.ScrollRow = 7671
        ActiveWindow.ScrollRow = 7652
        ActiveWindow.ScrollRow = 7633
        ActiveWindow.ScrollRow = 7614
        ActiveWindow.ScrollRow = 7595
        ActiveWindow.ScrollRow = 7556
        ActiveWindow.ScrollRow = 7537
        ActiveWindow.ScrollRow = 7518
        ActiveWindow.ScrollRow = 7499
        ActiveWindow.ScrollRow = 7518
        ActiveWindow.ScrollRow = 7537
        ActiveWindow.ScrollRow = 7556
        ActiveWindow.ScrollRow = 7575
        ActiveWindow.ScrollRow = 7595
        ActiveWindow.ScrollRow = 7614
        ActiveWindow.ScrollRow = 7633
        ActiveWindow.ScrollRow = 7671
        ActiveWindow.ScrollRow = 7690
        ActiveWindow.ScrollRow = 7709
        ActiveWindow.ScrollRow = 7729
        ActiveWindow.ScrollRow = 7748
        ActiveWindow.ScrollRow = 7709
        ActiveWindow.ScrollRow = 7690
        ActiveWindow.ScrollRow = 7671
        ActiveWindow.ScrollRow = 7652
        ActiveWindow.ScrollRow = 7633
        ActiveWindow.ScrollRow = 7614
        ActiveWindow.ScrollRow = 7595
        ActiveWindow.ScrollRow = 7614
        ActiveWindow.ScrollRow = 7633
        ActiveWindow.ScrollRow = 7652
        ActiveWindow.ScrollRow = 7671
        ActiveWindow.ScrollRow = 7690
        ActiveWindow.ScrollRow = 7709
        ActiveWindow.ScrollRow = 7729
        ActiveWindow.LargeScroll Down:=-2
        Range("R10:R7694").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Foglio1").Select
        Range("B1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Sheets("mini").Select
    
    Sheets("Foglio1").Select
    Dim Intervallo As Range, IntervDest As Range
    Dim Elenco As New Collection
    Dim Righe, R, Riga, A, R1
    Set Intervallo = Range("A1").CurrentRegion
    Set Intervallo = Intervallo.Offset(1, 0).Resize(Intervallo.Rows.Count - 1, _
        Intervallo.Columns.Count)
    Set IntervDest = Intervallo.Offset(0, Intervallo.Columns.Count + 1)
    IntervDest.ClearContents
    Righe = Intervallo.Rows.Count
    On Error Resume Next
    For R = 1 To Righe
    Elenco.Add R, CStr(Intervallo(R, 1).Value)
    Next
    On Error GoTo 0
    maxvolume = 0
    For R = 1 To Elenco.Count
      Riga = Elenco(R)
        IntervDest(R, 1) = Intervallo(Riga, 1)
      volume = Intervallo(Riga, 2)
      For R1 = Riga + 1 To Righe
        If Intervallo(Riga, 1) = Intervallo(R1, 1) Then
           volume = volume + Intervallo(R1, 2)
        End If
      Next
      IntervDest(R, 2) = volume
      If volume > maxvolume Then
        maxvolume = volume
        rigamax = R
      End If
    Next
    Cells(2, 6).Value = "Volume max"
    Cells(2, 7).Value = maxvolume
    Cells(3, 6).Value = "Prezzo"
    Cells(3, 7).Value = IntervDest(rigamax, 1)
    
    
    End Sub



  • di Patel (utente non iscritto) data: 11/07/2012

    Elimina tutte quelle righe
    activewindow.scrollrow = ....
    che non servono a niente



  • di Patel (utente non iscritto) data: 11/07/2012

    ... poi ci sarebbe una condizione su quante righe copiare ....

    è proprio per questo che ho chiesto di vedere il file


  • Ludagi
    di Ludagi data: 11/07/2012

    Ho eliminato le righe ... il file è stato costruito nel tempo in maniera molto artigianale e caotico quindi penso che per te è piu' facile ricostruirlo del tutto ...ma mi devo impegnare a preparare una specifica dettagliata di cosa voglio realizzare ...

    tutto comincia con un collegamento in dde che mi da in excel il file allegato.

    con una macro creo una riga a partire dalla riga 11 ogni qualvolta vi è una variazione di volume.

    quindi mi si creano tante righe ad ogni variazione di volume e bisogna calcolare per ogni riga il volume interessato ed il prezzo a cui è avvenuto lo scambio..... e tanti altri calcoli ...