Condividi:        

riordino date

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

riordino date

Postdi ramset1978 » 11/06/13 18:08

Ciao, avrei bisogno di un piccolo aiuto con excel.

Nella colonna A ci sono delle date in ordine cronologico (la stessa data può essere presente più volte).
Nella colonna B ci sono dei numeri.

A me servirebbe avere:
Nella colonna C, tutte le date presenti nella colonna A in ordine cronologico escludendo quelle presenti più volte.
Nella colonna D la somma dei numeri presenti nella colonna B in corrispondenza della stessa data nella Colonna A.

Se ad esempio le prime 5 date della colonna A sono:
1/1/2013
2/1/2103
3/1/2013
3/1/2013
7/1/2013
e nella colonna B per comodità diciamo che è sempre presente 1.

Nella colonna C vorrei ottenere:
1/1/2013
2/1/2103
3/1/2013
7/1/2013
e nella colonna D sempre 1 ad esclusione della cella D3 dove dovrei ottenere 2.

Mi date gentilmente una mano?
Grazie, saluti.
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Sponsor
 

Re: riordino date

Postdi Anthony47 » 11/06/13 23:14

Questo e' un lavoro che si fa tipicamente con una tabella pivot, inserendo il campo "Data" nell' area RIGA, e il campo "Valore" (come "somma di" Valore).

In alternativa:
1- ti crei in colonna C un elenco unico delle date usando Filtro avanzato (Menu /Dati /Filtro /Filtro avanzato; spunta "Copia univoca dei record" e "Copia in altra posizione; compilare "Copia in" con l' indirizzo C1; Ok)
2- usi poi in colonna D la formula Somma.Se, es partendo da D2
Codice: Seleziona tutto
=SOMMA.SE(A:A;C2;B:B)


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

Re: riordino date

Postdi Flash30005 » 12/06/13 00:54

Come consigliato da Anthony la Pivot risolve questo problema come pure la formula
ma se vuoi utilizzare una macro questa dovrebbe fare al caso tuo
Codice: Seleziona tutto
Sub SommaPerData()
Range("C2:D10000").ClearContents
UR1 = Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1
    Tr = 0
    DataM = Range("A" & RR1).Value
    UR2 = Range("C" & Rows.Count).End(xlUp).Row + 1
    For RR2 = 2 To UR2
        Data2 = Range("C" & RR2).Value
        If DataM = Data2 Then Tr = 1
    Next RR2
    If Tr = 0 Then
        Ur3 = Range("C" & Rows.Count).End(xlUp).Row + 1
        Range("C" & Ur3).Value = DataM
    End If
Next RR1
UR2 = Range("C" & Rows.Count).End(xlUp).Row

For RR2 = 2 To UR2
Somma = 0
    Data2 = Range("C" & RR2).Value
    For RR1 = 2 To UR1
        DataM = Range("A" & RR1).Value
        If DataM = Data2 Then Range("D" & RR2).Value = Range("D" & RR2).Value + Range("B" & RR1).Value
    Next RR1
Next RR2
End Sub


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: riordino date

Postdi ninai » 12/06/13 05:33

Ciao a tutti (mio primo intervento)

Un' altra possibilità, per realizzare l'elenco univoco,:
-definire un nome per la colonna A (es. "date")
- in C:
Codice: Seleziona tutto
=SE(VAL.ERRORE(PICCOLO(SE(FREQUENZA(date;date);date);RIF.RIGA(A1)));"";PICCOLO(SE(FREQUENZA(date;date);date);RIF.RIGA(A1)))

Matriciale
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: riordino date

Postdi Flash30005 » 12/06/13 08:03

Ciao Ninai e benvenuto nel Forum

ricontrolla la formula perché non funziona
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: riordino date

Postdi ninai » 12/06/13 10:19

Ciao
a me sembra funzionare
allego file esempio
https://www.dropbox.com/s/5pgtgtqtemhah ... numeri.xls

in alternativa c'è questa:
Codice: Seleziona tutto
=SE(VAL.ERRORE(INDICE(date;PICCOLO(SE(VAL.NUMERO(CONFRONTA(RIF.RIGA(date);CONFRONTA(date;date;0);0));CONFRONTA(date;date;0);"");RIGHE($A$1:A1))));"";INDICE(date;PICCOLO(SE(VAL.NUMERO(CONFRONTA(RIF.RIGA(date);CONFRONTA(date;date;0);0));CONFRONTA(date;date;0);"");RIGHE($A$1:A1))))

e diverse altre
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: riordino date

Postdi ramset1978 » 12/06/13 17:45

Grazie ragazzi, fantastici come sempre. :D
Ottimi suggerimenti, valuterò quale si adatta meglio alle mie necessità.
Di primo achito direi quello di flash in vba.
L'ultimo suggerimento però non funziona, i calcoli sono errati.
Un grazie sentito ed un saluto a tutti.
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: riordino date

Postdi CANAPONE » 12/06/13 21:06

Ciao a tutti,

ho fatto anch'io delle prove con al prima formula con la FREQUENZA, mi ha messo in ordine le date.

Non serve la forma matriciale, ma il risultato non cambia: la metto da parte. Con la FREQUENZA sto avendo dei problemi.

Buona serata
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: riordino date

Postdi Flash30005 » 12/06/13 21:42

Si infatti funziona ma (forse) avevo interpretato male la specifica:
ninai ha scritto:-definire un nome per la colonna A (es. "date")

non deve essere definito un nome per la colonna A (tutta) ma solo le righe che contengono i dati

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: riordino date

Postdi CANAPONE » 13/06/13 06:01

Grazie Flash30005,

per imparare ad usare FREQUENZA sto cercando di digerire e scimmiottare tutto quello che trovo in rete.

Un caro saluto da Firenze
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: riordino date

Postdi ninai » 13/06/13 14:24

Flash30005 ha scritto:Si infatti funziona ma (forse) avevo interpretato male la specifica:
ninai ha scritto:-definire un nome per la colonna A (es. "date")

non deve essere definito un nome per la colonna A (tutta) ma solo le righe che contengono i dati

ciao


Infatti!!
avendo allegato un file, con dati fittizi ed il nome "date" definito all'interno, non ho specificato di proposito i riferimenti di "A".

Canapone
anche io, meno che scimmiotto queste formule, mi aggrovigliano la mente.
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: riordino date

Postdi ramset1978 » 23/06/13 18:13

HELP ME!
Flash e altri di buona volontà. Vorrei utilizzare il codice di Flash ma non riesco ad adattarlo al mio file.

Ho una colonna etichettata "data" dalla riga 2 alla riga 10.000, una colonna "numero" etichettata dalla riga 2 alla riga 10.000.
In un nuovo foglio vorrei ottenere in nella colonnaA la Data e nella colonnaB la somma dei numeri. Mi dai gentilmente una mano?
Grazie
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: riordino date

Postdi Flash30005 » 24/06/13 08:33

La macro è abbastanza "leggibile" e se non riesci ad adattarla dovresti almeno specificare quali sono le colonne interessate.
Oppure pubblica il file
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: riordino date

Postdi Anthony47 » 24/06/13 11:14

Questa versione di macro e' piu' semplice della precedente, quindi forse piu' semplice da comprendere:
Codice: Seleziona tutto
Sub sumbydate()
Dim LastA As Long, NextJ As Long, I As Long
'
Range("C:D").ClearContents
Range("C1:D1").Value = Array("Data", "Somma")
LastA = Cells(Rows.Count, "A").End(xlUp).Row
For I = 2 To LastA
    If Application.WorksheetFunction.CountIf(Range("A2").Resize(I - 1, 1), Cells(I, "A").Value) = 1 Then
        NextJ = Cells(Rows.Count, 3).End(xlUp).Row + 1
        Cells(NextJ, 3) = Cells(I, "A").Value
        Cells(NextJ, 4).FormulaLocal = "=somma.se(A:A;C" & NextJ & ";B:B)"  '<<1 Vedi testo
        Cells(NextJ, 4).Value = Evaluate("=sumif(A:A,C" & NextJ & ",B:B)")  '<<2 Vedi testo
    End If
Next I
End Sub
Le istruzioni <<1 e <<2 sono alternative: una inserisce la formula che calcola il totale, la seconda mette direttamente il valore calcolato; elimina quella che non ti piace.

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

Re: riordino date

Postdi ramset1978 » 24/06/13 11:27

Grazie mille anche a te Anthony, un saluto :)
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: riordino date

Postdi ramset1978 » 19/10/14 13:14

Dunque, qualcosa non torna.
Le dati presenti nella mia colonna A sono "quasi" in ordine cronologico ma non sempre, può succedere quindi che si abbia una sequenza di date come questa:

27/06/2012
29/06/2012
29/06/2012
02/07/2012
02/07/2012
28/06/2012
03/07/2012

In questo caso il 28 giugno viene riordinato dopo il 2 lug.
Servirebbe un codice che prima "memorizzasse" una sola volta tutte le date presenti (possibilmente in vba per velocizzare il tutto) e poi le ordinasse in ordine cronologico.
Troppo complicato?
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: riordino date

Postdi ramset1978 » 19/10/14 14:16

Riepilogando, dopo i vostri suggerimenti e tenuto conto che i dati di origine si trovano in foglio diverso, io l'avrei impostata cosi:

Codice: Seleziona tutto
Sub SumByDate()
    Sheets("Daily").Select
    Dim NrOrigine As Long, NextJ As Long, I As Long
    Dim VarData
    Dim VarNumero
     NrDaily = Application.WorksheetFunction.Max(2, Cells(Rows.Count, "A").End(xlUp).Row)

Sheets("FoglioOrigine").Select
NrOrigine = Application.WorksheetFunction.Max(2, Cells(Rows.Count, "A").End(xlUp).Row)

'memorizzo i dati del foglio con le date originali
VarData = Range(Cells(1, 1), Cells(NrOrigine, 1)).Value ‘(SERVIREBBE POTER ORDINARE QUESTI DATI IN ORDINE CRONOLOGICO)
VarNumero = Range(Cells(1, 2), Cells(NrOrigine, 2)).Value

    Sheets("Daily").Select
    For I = 2 To NrOrigine
   If VarData(I, 1) <> VarData(I - 1, 1) Then
   d = d + 1: Cells(d, 1) = VarData(I, 1)
  Cells(D, 2).Value = Evaluate("=SUMIF(VarData,A" & d & ",VarNumero)") ' QUESTA FORMULA DA ERRORE.
   End If
   Next I
    End Sub


Help me, please. :)
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: riordino date

Postdi Anthony47 » 19/10/14 17:52

Non e' possibile ordinare l' elenco di partenza prima di eseguire la macro SumByDate? Oppure ordinare l' elenco prodotto dalla macro?
Si puo' fare anche registrando una una seconda macro, e inserendo poi (o in testa o in coda alla macro attuale, a seconda della soluzione prescelta) la riga Call MacroOrdinamento.

Non c' e' bisogno di ricordare che con una pivot table le date sarebbero gia' ordinate ordinate (se impostato nelle opzioni della tabella).

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

Re: riordino date

Postdi ramset1978 » 19/10/14 17:59

Ciao Anthony,
no, non è possibile ordinare l'elenco di partenza.
L'ideale sarebbe: acquisire in vba l'elenco di partenza, riordinare le date sempre in vba dell'elenco acquisito (ed è questo che io non riesco a fare), e poi con un ciclo scrivere l'elenco delle nuove date. Non ho capito il tuo ultimo suggerimento.
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: riordino date

Postdi Anthony47 » 19/10/14 18:00

E ordinare invece l' elenco prodotto?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "riordino date":


Chi c’è in linea

Visitano il forum: raimea e 64 ospiti

cron