Condividi:        

Schiacciamento righe - somma quantità articoli (macro?)

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

Schiacciamento righe - somma quantità articoli (macro?)

Postdi alis » 02/10/18 12:23

Ciao a tutti,
è il mio primo post su questo forum e spero tanto possiate aiutarmi...

Lavoro in un'azienda che vende prodotti alimentari e avrei bisogno di una mano con un file Excel che usiamo per stampare le fatture.
Con un po' di fatica son riuscito a creare un file che, usando un lettore ottico, censisce tutti i prodotti grazie al codice a barre.

Spesso però ci capita di avere moltissime unità dello stesso tipo, con codici lotto uguali o diversi è indifferente.
Ad esempio con 10 confezioni di spaghetti, al momento avrei 10 righe.

Mi piacerebbe riuscire a "schiacciare" le righe in modo da avere una sola riga con Quantità = 10 e Num. Lotto = concatenazione dei numeri lotto distinti che trova.

Ho provato a guardare un po' in giro per il forum e ho il timore che sia necessaria una macro, ma purtroppo non ci ho alcuna dimestichezza. Potreste darmi una mano?

Ecco il file che sto usando, in formato XLSX e ODS
https://ufile.io/bjrdl
https://ufile.io/s2jx1

Grazie! :oops:
alis
Newbie
 
Post: 4
Iscritto il: 02/10/18 12:14

Sponsor
 

Re: Schiacciamento righe - somma quantità articoli (macro?)

Postdi Marius44 » 02/10/18 17:38

Ciao
se vuoi le formule è un po' in salita ma si può fare.
Nel tuo file inserisci queste formule

in AC21
Codice: Seleziona tutto
=SE.ERRORE(INDICE(A21:A27;PICCOLO(SE(CONFRONTA(A21:A27;A21:A27;0)=RIF.RIGA(INDIRETTO("1:"&RIGHE(A21:A27)));CONFRONTA(A21:A27;A21:A27;0);"");RIF.RIGA(INDIRETTO("1:"&RIGHE(A21:A27)))));"")


in AE21
Codice: Seleziona tutto
=SOMMA(($A$21:$A$27=$AC21)*($M$21:$M$27))

Confermale, entrambe, con Ctrl+Shift+Enter, non il solo Enter, e quindi ricopiale in basso fin dove hai righe impegnate.
Vedrai che ti danno un solo prodotto e la somma delle quantità.

Rovescio della medaglia:
a) nell'intervallo NON ci devono essere celle vuote
b) non saprei come far "concatenare" i lotti
c) la fattura da stampare andrebbe posizionata in altra parte del Foglio (con le suddette formule)

Non credo che sia quello che vuoi ma può essere utilie studiandoci un po' per ottenere un buon risultato.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Schiacciamento righe - somma quantità articoli (macro?)

Postdi Anthony47 » 03/10/18 00:13

Personalmente lavorerei con una macro
Tuttavia nel file le intestazioni recitano Codice; ID; Articolo
Nella descrizione parli di NumeroLotto

Puoi precisare in base a quali colonne bisogna "schiacciare" le voci e quale e' la colonna il cui contenuto e' da concatenare?

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

Re: Schiacciamento righe - somma quantità articoli (macro?)

Postdi alis » 04/10/18 14:04

Ciao a tutti!
Intanto grazie per le risposte, sono felice :)

Ho migliorato un po' la logica e questo dovrebbe facilitare le cose... oltre che permetterci di tenere "protetto" lo sheet da stampare, mentre le modifiche vengono fatte sugli altri fogli, in modo da non rischiare di compromettere la logica cancellando celle sbagliate.

Vi allego quest'ultima versione.
https://ufile.io/4qemo
La mia versione ideale dovrebbe darmi il risultato nello sheet "Fattura da stampare che vorrei", e cioè, quando trova un lotto le cui prime 3 lettere corrispondono a uno stesso ID (foglio Source) dovrebbe sommarne le quantità e concatenare i diversi lotti che trova (in questo caso ARI11 e ARI12...

E' fattibile?

Grazie ancora!!!!
alis
Newbie
 
Post: 4
Iscritto il: 02/10/18 12:14

Re: Schiacciamento righe - somma quantità articoli (macro?)

Postdi alis » 04/10/18 17:16

Nel frattempo, Marius, sto un pochino giocando con le funzioni che mi hai scritto tu.
Ho dovuto tradurle in inglese perché la mia versione di Office non è italiana... sto facendo un po' di confusione, credo :P
alis
Newbie
 
Post: 4
Iscritto il: 02/10/18 12:14

Re: Schiacciamento righe - somma quantità articoli (macro?)

Postdi Anthony47 » 05/10/18 15:09

Non hai spiegato il criterio con cui viene compilato il foglio "Fattura da stampare"; a spanne mi pare che vanno elencati tutti gli item elencati in Input Lotti-Colonna A.

Se e' cosi', allora con questa macro dovresti poter compilare le colonne G e N come da desiderata; per le altre colonne dovrebbero andare bene le formule che gia' hai.
Codice: Seleziona tutto
Sub CreaFatt()
Dim SSh As String, LastB As Long, I As Long, iKey As String, ISh As String
Dim kArr(1 To 44), gArr(1 To 44), nArr(1 To 44), kCnt As Long
Dim myMatch
'
SSh = "Input Lotti"             '<<< Il foglio con le voci da fatturare
ISh = "Fattura da stampare"     '<<< Il foglio della fattura
'
Sheets(ISh).Select
LastB = Sheets(SSh).Cells(64, "A").End(xlUp).Row
With Sheets(SSh)
For I = 2 To LastB
    iKey = .Cells(I, 1)
    If iKey <> "" Then
        myMatch = Application.Match(Left(iKey, 3), kArr, 0)
        If IsError(myMatch) Then
            kArr(kCnt + 1) = Left(iKey, 3)
            gArr(kCnt + 1) = iKey
            nArr(kCnt + 1) = nArr(kCnt + 1) + 1
            kCnt = kCnt + 1
        Else
            nArr(myMatch) = nArr(myMatch) + 1
            If Len(Replace(gArr(myMatch), iKey, "", , , vbTextCompare)) <> Len(gArr(myMatch)) Then
            Else
                gArr(myMatch) = gArr(myMatch) & ", " & iKey
            End If
        End If
    End If
Next I
End With
Range("G20").Resize(UBound(gArr), 1) = Application.WorksheetFunction.Transpose(gArr)
Range("N20").Resize(UBound(nArr), 1) = Application.WorksheetFunction.Transpose(nArr)
End Sub

Per inserire il codice:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Personalizza la riga marcata <<< come da commento.

Poi torna su Excel e quando vuoi creale l'elenco dei nomi-foglio lancia la macro CreaFatt:
-premi Alt-F8
-seleziona CreaFatt dall'elenco di macro disponibili
-premi Esegui

Oppure associ la Sub CreaFatt a un pulsante da inserire sul foglio

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

Re: Schiacciamento righe - somma quantità articoli (macro?)

Postdi alis » 11/10/18 17:53

Ciao Anthony,
...funziona!
Bellissimo vedere le magie accadere.
L'unica contropartita è che bisogna iniziare sempre dallo stesso template per compilare una nuova fattura, dal momento che, una volta girata la macro, le colonne G ed N non leggono più i source sheets, ma diventano popolati staticamente.

Onestamente, non è un problema, va davvero benissimo così.

Ora cerco di associare un pulsante alla sub che hai creato.

GRAZIE
Mi hai reso felice :)
alis
Newbie
 
Post: 4
Iscritto il: 02/10/18 12:14


Torna a Applicazioni Office Windows


Topic correlati a "Schiacciamento righe - somma quantità articoli (macro?)":


Chi c’è in linea

Visitano il forum: Nessuno e 77 ospiti