Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

Scorrere e sommare una colonna dove la riga fissa e la colonna variabile

  1. #1
    Roberto52 non  in linea Scolaretto
    Post
    96
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buonasera,

    mi occorre un aiuto, ho un foglio di lavoro dove sono descritti i turni di 40 persone nell'anno in corso da gennaio a dicembre.
    Nelle righe sono disposti i nominativi delle persone, nelle colonne i rispettivi turni escluso la prima colonna
    Nome   Cognome    1-gen   2-gen   3-gen   etc fino al 31-dic
    Franco  Rossi             RI       MAG    RC 
    Roberto Ventura         PA1    PAC     RM
    e cosi via
    
    Voglio, specificando la data, sommare tutte le persone che hanno per esempio RM (riposo mattina) o MAG (magazzino).
    Con la ricerca orizzontale mi posiziono alla cella della data specificata e individuo la colonna tramite istruzione ActiveCell.Address.
    Non riesco poi a scorrere tutta la colonna, essendo la colonna variabile, per sommare tutte le persone con lo stesso turno.
    Ho cercato di essere il pi chiaro possibile.
    Mi potreste aiutare
    Vi ringrazio in anticipo

  2. #2
    Marius44 non  in linea Scolaretto
    Post
    355
    Like Inviati  
    0
    Like Ricevuti  
    4
    Ciao
    Se ho capito bene dovresti usare le funzioni INDICE e CONFRONTA (questa per due volte) abbinate.
    Mi spiego meglio la funzione INDICE restituisce un dato all'incrocio di riga e colonna; per individuare queste usa la funzione CONFRONTA (per la riga) e di nuovo CONFRONTA (per la colonna).

    Ciao,
    Mario

    PS - Dimenticavo di dire che occorre un ciclo per "contare" (non sommare) le celle individuate.
    Ultima modifica di Marius44; 01-11-2020 07:41  Motivo: aggiunta

  3. #3
    Roberto52 non  in linea Scolaretto
    Post
    96
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno,
    ho risolto il problema in questa maniera:
    Set zonaoriz1 = ActiveSheet.Range([D3], [D3].End(xlToRight)) 'impostiamo l'intervallo orizzontale
     conta = 0               'Conto il numero di persone in RI
     riga = "3"
     uColonna = 135     'Lunghezza della colonna
     For Each CR In zonaoriz1                     'e per ogni cella nella zona orizzontale
       If CR = TextBox3.Text Then    'cerchiamo la cella (CR) che avra' la data uguale alla data scritta in TextBox20
         C = CR.Column  'trovata la cella, con C prendiamo il numero di colonna, che ci serve per definire 'il numero di colonna usato dal riferimento Cells usato per 
         ActiveSheet.Cells(riga, C).Select   'mi posiziono nella cella
         cont = 0
         For x = 12 To uColonna
           Tipo = Sheets("Turno").Cells(x, C).Value
           If Tipo = "RC" Or Tipo = ".RC" Then
             conta = conta + 1
             Cognome = Range("B" & x)
             Nome = Range("c" & x)
             With Me.ListBox4
               .ColumnCount = 3
               .AddItem
               .List(cont, 0) = Cognome
               .List(cont, 1) = Nome
               .List(cont, 2) = Tipo
              'sotto: incrementiamo di uno la variabile "cont" in modo che al ciclo successivo "cont" indichi la riga 'successiva nell'istruzione List
              cont = cont + 1
             End With
           End If
         Next
         Exit For
       End If
     Next
     Set sh = Nothing
    
    Ti ringrazio Marius44

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Formattazione per la riga o per la colonna?!
    Da danielemusso95 nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 07-03-2018, 20:36
  2. Risposte: 1
    Ultimo Post: 24-07-2016, 15:50
  3. Risposte: 4
    Ultimo Post: 17-05-2015, 14:19
  4. Risposte: 11
    Ultimo Post: 03-02-2014, 12:15
  5. Risposte: 0
    Ultimo Post: 18-05-2011, 10:37