Risultati da 1 a 16 di 16

Discussione: estrarre il valore da una cella in una certa posizione



  1. #1
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0

    estrarre il valore da una cella in una certa posizione


    Ciao a tutti, mi trovo alle prese con un certo problema e vi chiedo se potete aiutarmi.
    Io ho una tabella in cui per ogni giorno di un certo periodo di tempo ho il valore raggiunto da un certo parametro, in particolare indico il valore che tale parametro assume all'inizio e alla fine della giornata, oltre che al valore minimo e massimo raggiunto nella giornata.

    A me interessano sapere due cose:
    1)sapere per ogni giorno (riga) qual'è il valore minimo raggiunto in un certo intervallo di giorni a partire dal giorno stesso.
    2)sapere per ogni giorno (riga) qual'è il valore raggiunto trascorso un certo intervallo di giorni a partire dal giorno stesso.

    Questo intervallo di giorni è un dato ma varia di giorno in giorno.
    Non so se sono stato chiaro, in realtà quello che chiedo concettualmente è molto semplice, quindi allego un file di esempio in cui spero di essere ulteriormente chiaro.

    File Allegati File Allegati

  2. #2
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona giornata, grosso999;
    in attesa di una Formula in grado di soddisfare la Tua Richiesta, potresti provare con questo Codice VBA:
    Codice: 
    Option Explicit
    
    Sub Analizza()
    Application.ScreenUpdating = False
    Dim NRg As Long, x As Long
    Dim myRange As Range
        
        Range("G2:H12").ClearContents
        NRg = Range("A" & Rows.Count).End(xlUp).Row
            For x = 2 To NRg
                If Cells(x, 6) <> 0 Then
                    Set myRange = Range(Cells(x - (Cells(x, 6) - 1), 3), Cells(x, 3))
                        Cells(x, 7).Value = Application.WorksheetFunction.Min(myRange)
                        Cells(x, 8).Value = Cells(x - (Cells(x, 6) - 1), 5)
                End If
            Next x
        Set myRange = Nothing
    Application.ScreenUpdating = True
    End Sub

    A disposizione.

    Buon Lavoro.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  3. #3
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Ti ringrazio della risposta. Io ho conoscenze di excel solo a livello base e quindi non ho mai usato VBA, ho però guardato sul web e sono riuscito a inserire e far partire il codice che hai scritto e mi sembra che funzioni, quindi grazie ancora. Dato che però in futuro mi potrebbe capitare di dover modificare in qualche modo le mie esigenze, se qualcuno riesce a scrivermelo con una "normale" formula la cosa mi farebbe piacere

  4. #4
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1653
    Versione Office
    2010 PC
    Likes ricevuti
    889
    Likes dati
    183
    Ciao
    Visto anche l'invito del buon Giuseppe (un saluto), "formulo", una proposta alternativa:
    in G2:
    =SE(F2;MIN(SE(($A$2:$A$11<A2+F2)*($A$2:$A$11>=A2);$C$2:$C$11));"")
    Matriciale
    in H2:
    =SE(F2;MATR.SOMMA.PRODOTTO(($A$2:$A$11=A2+F2-1)*$E$2:$E$11);"")

    ambedue da trascinare in basso.

    NB
    Ho presupposto (in base all'esempio) che quando in F non c'è valore, non vuoi nessun risultato


    verifica i tuoi risultati in H che qualcuno a me non corrisponde
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  5. #5
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona giornata, Ninai.

    @ ninai, scrive:
    ... verifica i tuoi risultati in H che qualcuno a me non corrisponde ...
    mi sembra di capire che la discrepanza vada ricercata nel modo di interpretare il Campo "Numero di giorni"
    Considerando che le Date non sono sequenziali, in VBA non ho fatto riferimento al Campo "Data" ma al Campo "Numero di giorni".

    In pratica ho considerato il Numero di giorni come il riferimento al Record precedente.

    Cerco di spiegarmi più compiutamente prendendo ad esempio il Record in Riga 7
    Avendo dichiarato il Numero di giorni = 4, il riferimento per il Campo "Fine" l'ho considerato riferito al Campo "Fine" della Riga 4

    Utilizzando il termine di paragone sul Campo "Data" avremmo:
    - Data in "A7" = 19/06/2015
    - Campo Numero di giorni in "F7" = 4
    - 19/06/2015 + 4 -1 = 22/06/2015
    Con questo criterio il risultato sarà 4,356 (Riga 6 Campo "Fine")
    Il risultato richiesto è, 4,442 (Riga 4 Campo "Fine")

    Questa è stata la mia interpretazione e, come tale, opinabile.



    A disposizione.

    Buon Lavoro.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  6. #6
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    @ ninai,
    Nemmeno a me la colonna H corrisponde per alcuni valori.
    Inoltre nemmeno la colonna G ma penso che ciò sia dovuto al fatto che non so come devo interpretare/trattare quel "matriciale" che hai scritto dopo la formula, se mi puoi per favore spiegare

  7. #7

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7121
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2060
    Likes dati
    1298
    Una proposta col vba, con un codice leggermente diverso da quello proposto da Giuseppe (che saluto) che comunque funziona perfettamente.
    In questo caso ho anche considerato l'ipotesi che vengano per errore inseriti dei valori di ricerca nella colonna F che superi le righe e genererebbe un debug che chi non sa usare il vba rischierebbe non sapere cosa fare.

    Codice: 
    Option Explicit
    Sub MinimoFine()
    	Dim wks As Worksheet, min As Double
    	Dim Rng As Range, y As Integer
    	On Error GoTo Errore
    	Set wks = Worksheets("Foglio1")
    	For y = 2 To 11
    		Set Rng = wks.Range(Cells(y - (Cells(y, 6) - 1), 3), Cells(y, 3))
    		With wks
    			If .Range("F" & y) > 0 Then
    				.Range("G" & y) = Application.WorksheetFunction.min(Rng)
    				.Range("H" & y) = Cells(y - (Cells(y, 6) - 1), 5)
    			End If
    		End With
    	Next
    	Set wks = Nothing
    	Exit Sub
    	Errore: MsgBox "Sè è verificato un errore, controllare che i giorni nella colonna F non siano superiori alle righe dell'intervallo di ricerca"
    	Exit Sub
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  8. #8
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Nel caso non sia possibile o non riusciate a scrivermi una formula per fare ciò, che però per me sarebbe una cosa ottima, potreste per favore spiegarmi come usare il codice VBA scritto da Giuseppe MN?
    Nel senso che quel codice funziona correttamente, però io avrei necessità di utilizzarlo in diversi fogli di lavoro e diverse colonne, inoltre ho provato a utilizzarlo in altri fogli e mi da errore

  9. #9
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1653
    Versione Office
    2010 PC
    Likes ricevuti
    889
    Likes dati
    183
    ciao
    resto convinto che la mia proposta vada bene, ti allego file di lavoro

    NB
    per matriciale, intendo che devi confermare la formula con CTRL+MAIUSCOLO+INVIO
    File Allegati File Allegati
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  10. #10
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Scusami, non capisco, non può andare bene se da risultati sbagliati. La colonna "valore minimo raggiunto nell'intervallo di tempo" funziona ma la seconda colonna nei due casi che tu stesso hai sottolineato da valori scorretti

  11. #11
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1653
    Versione Office
    2010 PC
    Likes ricevuti
    889
    Likes dati
    183
    scusa ma:
    tu riporti come spiegazione:
    "Esempio: al 15/06/2015 nella colonna "numero di giorni" mi compare il numero 3, quindi prendo in considerazione il periodo 15/06/2015-17/06/2015 (che sono appunto 3 giorni) e inserisco il valore presente nella colonna "fine" al terzo giorno a partire dalla indicata nella riga, essendo il 15/06/2015 il primo giorno, il 17/06/2015 è il terzo giorno a cui corrisponde un valore pari a 4,136"

    al chè,
    il 19/06/2015 più 4 giorni arriviamo al 22/06/2015, in tale giorno la colonna E riporta 4,356

    analoga cosa per giorno 17/06/2015 più 5, pari a 21/06/2015 che non esiste come data

    così io ho capito e così corrisponde nelle altre righe che a te risultano corrette
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  12. #12
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Forse ho capito il motivo del malinteso.
    Praticamente i giorni che non sono presenti nella colonna data non vanno considerati, è come se non esistessero (dovrebbero essere dei sabati e delle domeniche). L'idea è che non devono essere contati i giorni di calendario ma i giorni presenti nella tabella.
    Ad esempio tu al 17-06-2015 hai contato che il quinto giorno è il 21 che non è presente nella tabella in quanto domenica e non essendoci la formula ha restituito zero, in realtà quello che vorrei che venisse fatto è che inserisca il valore presente nel quinto giorno della tabella, che sarebbe il 23-06-2015 (il cui valore è 4,42). In pratica non sarebbero da contare i giorni del calendario ma le celle, in pratica excel dovrebbe "pescare il valore la quinta cella in alto"

  13. #13
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1653
    Versione Office
    2010 PC
    Likes ricevuti
    889
    Likes dati
    183
    Ciao
    non conoscendo i significati dei valori e gli scopi, non avevo modo di capire quanto adesso hai specificato.
    A questo punto , anche la formula in G2 è giusta solo per una combinazione.
    L'approccio cambia, in G2:
    =SE(F2;MIN(SCARTO(A2;-F2+1;2;F2));"")
    in H2:
    =SE(F2;SCARTO(A2;-F2+1;4;);"")

    sempre se ho capito bene, fammi sapere
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  14. #14
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Si capisco, non sono stato abbastanza chiaro, del resto a volte non è semplice fare capire agli altri cosa si vorrebbe per questo ho postato un esempio.
    Comunque le tue formule funzionano, ho testato anche con un periodo di tempo maggiore ed è tutto ok, grazie mille.
    Solo ora mi sono reso conto che ho commesso un errore e ho invertito la colonna di minimo e massimo (C e D), quindi la colonna C in realtà contiene i valori massimi e la colonna D in realtà contiene i valori minimi. Saresti così gentile da sistemarmi la formula? In pratica invece di cercare i valori minimi nella colonna C sarebbero da cercare nella colonna D
    Ultima modifica fatta da:Canapone; 10/07/17 alle 17:38

  15. #15
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1653
    Versione Office
    2010 PC
    Likes ricevuti
    889
    Likes dati
    183
    basta cambiare il 2 dello scarto in 3.
    =SE(F2;MIN(SCARTO(A2;-F2+1;3;F2));"")

    Ti conviene cercare di capirle le formule, se no sarai sempre a rischio nell'adattale e/o lavorarci sopra.
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  16. #16
    L'avatar di grosso999
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Pordenone
    Messaggi
    22
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Si hai ragione.
    Grazie a tutti per il vostro aiuto!

Discussioni Simili

  1. Ricavare il numero di riga da posizione cella attiva
    Di giampi nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 02/03/17, 04:16
  2. [Risolto] Nascondere contenuto di una cella in funzione del valore valore di un'altra cella
    Di Emax80 nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 05/12/16, 16:54
  3. [Risolto] trovare posizione secondo e penultimo valore maggiore di zero
    Di Pietro733 nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 22/11/16, 13:52
  4. [Risolto] Controlla nelle celle via via sovrastanti ad una certa cella finché trovi una data, e riportala
    Di Pahadimas nel forum Domande su Excel in generale
    Risposte: 22
    Ultimo Messaggio: 17/10/16, 20:40
  5. Assegna un valore dato il valore un valore maggiore di 0 di altra cella
    Di Fabio71 nel forum Domande su Excel in generale
    Risposte: 20
    Ultimo Messaggio: 27/12/15, 21:23

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •