Condividi:        

[Excel] gestione tabella

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

[Excel] gestione tabella

Postdi manuelrm » 14/04/13 10:06

Buongiorno a tutti.
ho una tabella composta da tre colonne. queste rappresentano

STRADA 1 | STRADA 2 | TOT

questa tabella rappresenta degli incrocio e il totale sono gli incidenti in questi.
es.

Via abc | via d | 5 significa che nell'incrocio tra via abc e via d ci sono stati 5 incidenti.

in questa tabella però potrebbe esserci un record composto in questo modo:

via d | via abc | 2 . Questo record però rappresenta lo stesso incrocio di prima che in realtà non ha in totale né 5 né 2 incidenti ma 7

quindi in una tabella di partenza:

via abc | via d | 5
via d | via e | 3
via abc | via t | 1
via d | via abc | 2
via t | via abc | 1

vorrei ottenere una tabella finale cosi

via abc | via d | 7
via d | via e | 3
via abc | via t | 2


questa tabella è di circa 6000 righe...mi aiutate a fare qualcosa? sono riuscito con dei cerca verticali a trovare questi doppioni e a sommare gli incidenti..ma i record rimangono quindi ho quasi "raddoppiato" gli incidenti totali

(praticamente ho i due record via abc via d 7 e via d via abc 7 ...)

forse con una macro viene meglio?? ecco..con la macro non so proprio da dove iniziare
manuelrm
Newbie
 
Post: 1
Iscritto il: 14/04/13 09:56

Sponsor
 

Re: [Excel] gestione tabella

Postdi scossa » 14/04/13 11:41

manuelrm ha scritto:Buongiorno a tutti.
ho una tabella composta da tre colonne. queste rappresentano

STRADA 1 | STRADA 2 | TOT

questa tabella rappresenta degli incrocio e il totale sono gli incidenti in questi.
es.

Via abc | via d | 5 significa che nell'incrocio tra via abc e via d ci sono stati 5 incidenti.

in questa tabella però potrebbe esserci un record composto in questo modo:

via d | via abc | 2 . Questo record però rappresenta lo stesso incrocio di prima che in realtà non ha in totale né 5 né 2 incidenti ma 7

quindi in una tabella di partenza:

via abc | via d | 5
via d | via e | 3
via abc | via t | 1
via d | via abc | 2
via t | via abc | 1

vorrei ottenere una tabella finale cosi

via abc | via d | 7
via d | via e | 3
via abc | via t | 2


Con 3 colonne di appoggio e una tabella pivot credo potresti risolvere.
Ho ipotizzato tu abbia
Strada1 in colonna A da A3 in giù
Strada2 in colonna B da B3 in giù
Incdenti in colonna C da C3 in giù

In E2..G2 riporti le intestazioni di colonna
in E3:: =SE($B3>$A3;$A3;$B3)
in F3:: =SE($B3>$A3;$B3;$A3)
in G3:: =C3

Copi nelle righe sotto e poi selezioni questa nuova tabella e ne fai una pivot (campi riga !trada1, campi colonna Strada2, Dati somma di incidenti).
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] gestione tabella

Postdi Flash30005 » 14/04/13 11:58

Ciao Manuelrm e benvenuto nel Forum

Leggi il suggerimento di Scossa
se, invece, vuoi usare una macro puoi copiare l'intero codice qui proposto e con Alt+F11
entri nei progetti VBA
sul menu Inserisci -> Modulo
incolli sulla detra quanto copiato e lo puoi far eseguire con qualsiasi comando o "Chiavi scelta rapida"
Codice: Seleziona tutto
Sub CompilaTb()
Set Ws1 = Sheets("Foglio1")
Set Ws2 = Sheets("Foglio2")
Ws2.Cells.Clear
Ws1.Range("A1:C1").Copy Destination:=Ws2.Range("A1")
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1 - 1
Via11 = Ws1.Range("A" & RR1).Value
Via21 = Ws1.Range("B" & RR1).Value
    For RR2 = RR1 + 1 To UR1
    Via12 = Ws1.Range("A" & RR2).Value
    Via22 = Ws1.Range("B" & RR2).Value
    If Via11 = Via22 And Via21 = Via12 Then
    UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
    Ws2.Range("A" & UR2).Value = Via11
    Ws2.Range("B" & UR2).Value = Via21
    Ws2.Range("C" & UR2).Value = Ws1.Range("C" & RR1).Value + Ws1.Range("C" & RR2).Value
    End If
    Next RR2
Next RR1

For RR1 = 2 To UR1
TR = 0
MiaV1 = Ws1.Range("A" & RR1) & Ws1.Range("B" & RR1)
MiaV2 = Ws1.Range("B" & RR1) & Ws1.Range("A" & RR1)
For RR2 = 2 To UR2
MiaV22 = Ws2.Range("A" & RR2) & Ws2.Range("B" & RR2)
If MiaV1 = MiaV22 Or MiaV2 = MiaV22 Then GoTo SaltaRR2
Next RR2
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
    Ws2.Range("A" & UR2).Value = Ws1.Range("A" & RR1)
    Ws2.Range("B" & UR2).Value = Ws1.Range("B" & RR1)
    Ws2.Range("C" & UR2).Value = Ws1.Range("C" & RR1).Value
SaltaRR2:
Next RR1
End Sub


Premetto che la riga1 l'ho lasciata come testata
Utilizza il "Foglio1" come foglio dati origine
e "Foglio2" come dati destinazione

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: [Excel] gestione tabella

Postdi Anthony47 » 15/04/13 00:09

E per confonderti una terza proposta:
-I tuoi dati sono in col A, B e C, da riga 2 verso il basso
-in D2 inserisci la formula
Codice: Seleziona tutto
=ANNULLA.SPAZI(A2)&ANNULLA.SPAZI(B2)

-in E2 inserisci la formula
Codice: Seleziona tutto
=SE(CONTA.SE(D$1:D2;ANNULLA.SPAZI(B2)&ANNULLA.SPAZI(A2))>0;0;C2+SOMMA.SE(D:D;ANNULLA.SPAZI(B2)&ANNULLA.SPAZI(A2);C:C))

-copia D2:E2 verso il basso
In Colonna E avrai la somma di Via1/Via2 e Via2/Via1, che sara' presente solo sulla prima occorrenza dell' incrocio. Volendo filtri per col E >0 e vedi solo gli incroci valorizzati.

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


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] gestione tabella":


Chi c’è in linea

Visitano il forum: Gianca532011 e 58 ospiti