Pagina precedente | 1 2 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

unire e sommare due righe

Ultimo Aggiornamento: 10/04/2017 20:52
Post: 92
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
01/04/2017 14:13

Ciao ragazzi è possibile realizzare una macro che esegua una unione di due righe quando due campi sono uguali e sommare il risultato presente in un altro campo
Vi allego il file con il risultato voluto.
Grazie
Post: 3.794
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
01/04/2017 16:44

cosa mi dici per la colonna D ?
le righe con campi uguali sono sempre consecutive ?
[Modificato da patel45 01/04/2017 16:46]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 92
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
01/04/2017 16:52

La colonna D può assumere anche il valore "m" vengono unite due righe, non importa non importa.
No, le righe con BC uguali non sono quasi mai consecutive. Dovevo specificarlo, giusto.
Grazie dell'aiuto
Post: 3.795
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
01/04/2017 17:40

allega un file più realistico

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 93
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
01/04/2017 18:00

Eccolo e scusa
Post: 94
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
01/04/2017 18:03

il campo D puoi tranquillamente anche lasciarlo vuoto quando avviene l'unione
[Modificato da gionox 01/04/2017 18:03]
Post: 95
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
02/04/2017 08:54

Patel45 secondo te è possibile realizzare la mia richiesta o devo trovare qualcosa di alternativo?
Grazie :)
Post: 3.798
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
02/04/2017 09:00

è possibile, ma hai troppa fretta

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 96
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
02/04/2017 09:15

Grazie :)
Post: 3.799
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
02/04/2017 09:42

Sub SortSumDelete()
LR = Cells(Rows.Count, "A").End(xlUp).Row
Set Rng = Range("A7:G" & LR)
With ActiveWorkbook.Worksheets(1).Sort
      .SortFields.Clear
      .SortFields.Add Key:=Range( _
        "B8"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .SetRange Rng
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
End With
J = 8
Direction = Cells(J, 1).Value
Do While Direction <> ""
   Do While Cells(J + 1, "B").Value = Cells(J, "B").Value
      Cells(J, "E").Value = Cells(J + 1, "E").Value + Cells(J, "E").Value
      Cells(J, "G").Value = Cells(J + 1, "G").Value + Cells(J, "G").Value
      Rows(J + 1).Delete
   Loop
   J = J + 1
   Direction = Cells(J, 1).Value
Loop
End Sub


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 1.130
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
02/04/2017 09:43

ciao

ho usato una colonna d'appoggio
che ho nascosto

la B

unica raccomandazione
la formula non funziona se ci sono
delle righe vuote nel range di ricerca

in B8


=SE(E(A8>=149;A8<=151);150;SE(O(A8=250;A8=251);250;A8))


in A19


=SE.ERRORE(INDICE($B$8:$B$16;AGGREGA(15;6;(RIF.RIGA($B$8:$B$16)-RIF.RIGA($B$8)+1)/(FREQUENZA(CONFRONTA($B$8:$B$16;$B$8:$B$166;0);RIF.RIGA($B$8:$B$16)-RIF.RIGA($B$8)+1)>0);RIGHE($C$8:$C8)));"")



in C19

=INDICE($C$8:$C$16;CONFRONTA(A19;$B$8:$B$16;0))



in D19


=INDICE($D$8:$D$16;CONFRONTA(A19;$B$8:$B$16;0))



per la somma

=SOMMA.SE($C$8:$C$16;C19;$H$8:$H$16)



variando il range per le varie colonne

ciao


[SM=x423051]
Ciao Patel

mi hai fregato sul tempo di poco [SM=x423030]



[Modificato da federico460 02/04/2017 09:44]
Post: 1.131
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
02/04/2017 09:50

una curiosità
perché codificate con più codici
lo stesso cavo?

il ttr per esempio perché 3 codici ?
[Modificato da federico460 02/04/2017 09:51]
Post: 97
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
02/04/2017 10:09

ho visto entrambe le soluzioni. Funzionano benissimo entrambe.
Devo usare quella di Patel45 solo perchè ho la necessità che il risultato rimanga in quel range di celle.
Grazie Grazie

Ti rispondo subito:
Il mio foglio è stato di esempio. Quei codice derivano dal lettore Barcode. Purtroppo esso non permette di scegliere la lunghezza "sparata" e quindi per sparare 100 metri di cavo non posso sparare 100 volte 1 metro e quindi ho dovuto realizzare dei codici diversi per ogni prodotto (cavi per lo più) così da sparare la cifra più vicina alla metratura voluta.
Non so se ho reso l'idea
Post: 1.132
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
02/04/2017 10:26

Ciao
benissimo capito
per completare il tutto


=SE.ERRORE(INDICE($B$8:$B$16;CONFRONTA(0;INDICE(CONTA.SE($J$18:$J18;$B$8:$B$16&""););0));"")



questa funziona anche in presenza di righe vuote

nb

la colonna B la puoi spostare dove vuoi
[SM=g27827]

ma la macro è meglio
sai mai che qualcuno ci metta le mani [SM=g27827] [SM=g27827]
Post: 98
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
02/04/2017 19:23

Ciao Patel, scusa nuovamente il disturbo.
Nella tua Macro c'è qualche restrizione su che file utilizzarla?
Ti spiego, nel file che ti ho inviato funziona.
Se la lancio in un foglio di un altro file non funziona.
Se lo stesso foglio su cui l'ho provata (e dove non funziona) lo copio nel file che ti ho inviato, Funziona.
Sapresti la motivazione?
Post: 99
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
02/04/2017 20:13

Patel, ti aggiorno.
Praticamente ora parte e fa il dovere suo, però dopo esce la rondella di caricamento Windows. Penso entri in Loop, però non so il perchè
Post: 3.801
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
02/04/2017 22:28

ti avevo chiesto un file realistico, io ho costruito la macro sul foglio che tu hai allegato.

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 100
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
02/04/2017 22:53

Scusami, io ti ho inviato un foglio del file vero.
Adesso ti allego il file vero. Come potrai vedere il foglio "1" tranne per i numeri e per formule presenti, è identi a quello che ti ho presentato.
Io sul foglio "1" la sequenza delle operazioni che faccio è:
Lancio Macro: Rimuovi Duplicati
Lancio Macro: CopiaeIncolla
Lancio Macro: SortSumDelete.

Se esegui anche tu questo procedimento, c'è il loop nell'ultima macro.
Grazie e scusa se non ti ho inviato subito il file intero, pensavo che un singolo foglio sarebbe andato bene

Post: 3.804
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
03/04/2017 07:55

nel foglio vero ci sono formule, nel primo allegato non c'erano, abbiamo perso tempo, non si possono ordinare fogli con formule o per lo meno io non lo so fare. Spero che avrai capito che il file di esempio DEVE riflettere quello originale.

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 101
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/04/2017 08:18

Però io pensato alla macro CopiaIncolla (valori) proprio per questo, cosi da eliminare le formule.
È strano perchè la macro funziona (unisce le righe) però nel finale manda in "caricamento" excel.
Per questo pensavo fosse uguale il foglio (dopo la macro CopiaIncolla) che ti avevo inviato.
Scusa se ti ho fatto perdere tempo
Post: 3.805
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
03/04/2017 12:25

A che serve la macro rimuovi duplicati ? non dobbiamo sommarli i duplicati ?
Inoltre la macro worksheet_change deve essere eliminata, perché ce l'hai messa ?
[Modificato da patel45 03/04/2017 13:20]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 102
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/04/2017 14:07

Ciao, la macro Rimuovi Duplicati l'ho inserita per indicare la quantitá sparata. Il lettore è in grado solo di leggere il codice ma non la quantitá, quindi per esprimere 2 viti come quantità, devo sparare due volte il codice "360".
Poi, appunto la macro elimina I 360 duplicati cosi rimane solo un 360 e come quantità due.
WoorksheetChange serve per attivare la macro RimuoviDuplicati.
Quando legge la parola FINE,allora parte la macro di cui sopra.
la macro RimuiviDuplicati poi va integrata la tua che elimina non più I Codici duplicati, ma il Nome e diametro duplicati.
Grazie per la pazienza.
(al foglio "1" lancia la sequenza delle macro da me indicate con I dati che ho inserito io e ti accorgerai del risultato voluto)
Post: 103
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/04/2017 14:11

Ah, ora che ci penso la tua macro andrebbe a compensare anche la funzione di RimuoviDuplicati.
Giusto!
RimuoviDuplicati l'avevo pensata prima di accorgermi del problema dei cavi.
Post: 3.807
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
03/04/2017 17:20

elimina la macro worksheet_change e prova questa e solo questa
Sub CopiaIncolla()
LR = Cells(Rows.Count, "A").End(xlUp).Row
numvuote = WorksheetFunction.CountBlank(Range("B8:B" & LR))
numpiene = LR - numvuote
Range("A8:G" & numpiene).Copy
Range("A8:G" & numpiene).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.CutCopyMode = False
Range("A" & numpiene + 1 & ":G" & LR).ClearContents
LR = Cells(Rows.Count, "A").End(xlUp).Row
Set Rng = Range("A7:G" & LR)
With ActiveWorkbook.Worksheets(1).Sort
      .SortFields.Clear
      .SortFields.Add Key:=Range( _
        "B8"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .SetRange Rng
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
End With
J = 8
Direction = Cells(J, 1).Value
Do While Direction <> ""
   Do While Cells(J + 1, "B").Value = Cells(J, "B").Value
      Cells(J, "E").Value = Cells(J + 1, "E").Value + Cells(J, "E").Value
      Cells(J, "G").Value = Cells(J + 1, "G").Value + Cells(J, "G").Value
      Rows(J + 1).Delete
    Loop
    J = J + 1
    Direction = Cells(J, 1).Value
Loop
End Sub


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 105
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/04/2017 19:53

Ciao Patel, per elimina la macro WorkChange intendi eliminare l'avvio della macro RimuoviDuplicati e lasciare lo stesso codice nel foglio di lavoro che però mi lanci solo la tua macro dopo la parola FINE, giusto?
Se cosi fosse, non vorrei sbagliarmi ma c'è un problema, se i codici letti sono rispettivamente: 150 - 150 - 149. La reale quantità è 15, però la macro mi restituisce 35, perchè ho notato che ogni volta che scrivo 150 tutte le righe con codice 150 cambiano valore (incrementandosi) e quindi nella somma esce 35 al posto di 15.
[Modificato da gionox 03/04/2017 20:02]
Post: 3.809
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
03/04/2017 20:12

io intendo ELIMINARE non modificare, la macro worksheet_change NON ci deve essere, è dannosa
[Modificato da patel45 03/04/2017 20:15]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 106
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/04/2017 20:19

Scusami se ti contraddico, però ho appena provato a eliminare qualsiasi riga di codice presente nel foglio come tu mi hai detto.
Ho scritto nuovamente 150 - 150 -149 e ho lanciato la tua macro da Scheda Sviluppo, Gestione Macro etc.
Il risultato è sempre 35
Post: 3.810
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
03/04/2017 20:52

mi dispiace, ma non ti capisco, non ho idea di cosa significa

Ho scritto nuovamente 150 - 150 -149 e ...


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 107
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/04/2017 21:03

Provi a scrivere nella Colonna J: 150 out,150 out, e 149 in.
La somma finale non è 15 :(
(150 corrisponde alla lunghezza 10 metri,e 149 alla lunghezza 5 metri. Quindi 150 digitato due volte: 20 metri. 149 digitato una volta 5 metri ---> 20-5=15)
[Modificato da gionox 03/04/2017 21:04]
Post: 3.812
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
04/04/2017 09:17

io non ho mai preso in considerazione la colonna J e le tue formule, cosa c'entra con questa discussione ?
In conclusione, non so perché hai inserito la macro worksheet_change, se ti serve per qualche motivo non puoi usare la mia perché interviene ad ogni cambiamento e manda tutto in loop
[Modificato da patel45 04/04/2017 09:23]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Vota: 15MediaObject5,00143 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 10:52. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com