È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

copia celle se "data" >= "a"

  • Messaggi
  • OFFLINE
    nicolac2360
    Post: 1
    Registrato il: 13/09/2019
    Età: 37
    Utente Junior
    365
    00 16/09/2019 09:35
    Buongiorno a tutti,
    sono nuovo del forum.

    Vado subito al dunque. (allego file excel)
    Sto cercando il modo di copiare, dalla prima sheet "Laves" la riga X delle colonne A e B quando la data riportata nella stessa riga in colonna E (data fine) corrisponde all'intervallo mensile 01-31-xx-2019.

    Se la data è compresa nel mese 01, deve copiare nella seconda sheet "previsioni fatturato" nelle celle A e B "GENNAIO", se la data è compresa nel mese 02 deve copiarla nella C e D "FEBBRAIO", e cosi via per tutte le righe della tabella.
    In base alla Data in colona E deve copiarli nella seconda sheet nel mese riguardante.


    Grazie
    in anticipo per l'aiuto.
  • OFFLINE
    tanimon
    Post: 1.285
    Registrato il: 27/06/2011
    Utente Veteran
    excel 2007
    00 16/09/2019 11:35
    ciao a tutti [SM=x423028]

    sempre che abbia capito,
    in cella A1 del foglio "Previsoni Fattuato" del file che hai allegato,
    puoi provare con

    vb
    =SE(MESE(Laves!E7= 9);Laves!A7)


    poi la trascini a destra ed in basso.

    Prima controlla il numero del mese nel foglio "Laves",
    per adeguare la formula

    ciao
    Frank
    [Modificato da tanimon 16/09/2019 11:36]







    Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
    Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
  • OFFLINE
    nicolac2360
    Post: 1
    Registrato il: 13/09/2019
    Età: 37
    Utente Junior
    365
    00 16/09/2019 12:58
    Avevo già valutato questa formula ma diciamo che così non è "intelligente" perché io manualmente devo andare a mettere nella colonna "GENNAIO"la formula che punti SOLO le celle nella sheet "Laves" - "DATA FINE" che abbiano la data corrispondente al mese selezionato.

    Esempio:

    A1(shette previsioni), devo mettere =

    =SE(MESE(Laves!E7= 9);Laves!AX)

    dove X indica il numero della riga che ha come data gennaio.
    Devo quindi scorreremi ogni singola riga e farlo a mano.

    A me servirebbe un codice VB che faccia il controllo e che le copiasse in automatico nella colonna del mese corretto.
  • OFFLINE
    GiuseppeMN
    Post: 3.476
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 16/09/2019 18:51
    Buona sera, Nicola;
    consentimi un caro saluto a @tanimon, buona serata Frank!

    Fatto ciò, prima di cimentarmi con un Codice VBA, ti chiedo se hai valutato l'opportunità dell'utilizzo della funzione "Indiretto"; credo potrebbe funzionare.

    Considera solo che se serve un aiuto da parte mia dovrai pazientare fino a Giovedì/Venerdì.



    A disposizione.

    Buona serata.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    nicolac2360
    Post: 2
    Registrato il: 13/09/2019
    Età: 37
    Utente Junior
    365
    00 18/09/2019 11:08
    Non l'ho mai usata, ora ci provo. Vi aggiorno.

    Grazie
  • OFFLINE
    nicolac2360
    Post: 3
    Registrato il: 13/09/2019
    Età: 37
    Utente Junior
    365
    00 18/09/2019 12:42
    Con il SE MESE in parte funziona, ma dove trova delle celle senza data le copia comunque e quindi non va bene. Con INDIRETTO non ho capito come potrei usarlo per il mio scopo.

    Grazie
  • OFFLINE
    cromagno
    Post: 702
    Registrato il: 02/08/2015
    Utente Senior
    Excel 2013
    00 19/09/2019 02:33
    Ciao a tutti,
    se ho capito bene... in cella A2 del foglio "Previsioni Fattuato" (da copiare poi a destra ed in basso fin dove serve):

    =SE.ERRORE(INDICE(Tabella1[[DESCRIZIONE ORDINE]:[N° ORDINE]];AGGREGA(15;6;(RIF.RIGA(Tabella1[DATA FINE])-6)/((MESE(Tabella1[DATA FINE])=(INT((RIF.COLONNA()-1)/2)+1))*(Tabella1[DATA FINE]<>""));RIF.RIGA(A1));VAL.PARI(RIF.COLONNA())+1);"")


    riallego file...


    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
  • OFFLINE
    GiuseppeMN
    Post: 3.483
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 19/09/2019 04:23
    Buona giornata a Tutti;
    dopo aver studiato l'ottima soluzione di @cromagno, che saluto, (soluzione che ho salvato nella mia Directory "Procedure da non cancellare mai") ho provato a costruire un Codice VBA senza utilizzare Formule.

    Questo è un possibile Codice VBA che, solo come esempio, gestisce i mesi di Gennaio, Settembre e Dicembre; ovviamente su questa falsa riga è possibile gestire tutti i dodici mesi.

    Option Explicit
    
    Sub Copia()
    Application.ScreenUpdating = False
    Dim NRc As Long, x As Long, NRX As Long
    Dim y As Byte
        
        Sheets("Laves").Select
        With Worksheets("Previsioni Fatturato")
            NRc = .Cells.SpecialCells(xlCellTypeLastCell).Row
                If NRc < 2 Then NRc = 2
                    Range(.Cells(2, 1), .Cells(NRc, 24)).ClearContents
            NRc = Cells(Rows.Count, 5).End(xlUp).End(xlUp).Row
                For x = 7 To NRc
                    If Cells(x, 5) <> "" Then
                        Select Case Month(Cells(x, 5))
                            Case 1
                                NRX = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                                    y = 1                        
                            Case 9
                                NRX = .Range("Q" & .Rows.Count).End(xlUp).Row + 1
                                    y = 17                                
                            Case 12
                                NRX = .Range("W" & .Rows.Count).End(xlUp).Row + 1
                                    y = 23
                        End Select
                            .Cells(NRX, y) = Cells(x, 1).Value
                            .Cells(NRX, y + 1) = Cells(x, 2).Value
                    End If
                Next x
         End With
    Application.ScreenUpdating = True
    End Sub
    




    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    nicolac2360
    Post: 4
    Registrato il: 13/09/2019
    Età: 37
    Utente Junior
    365
    00 19/09/2019 16:47
    Grazie mille a entrambi. Funziona.