| | Post: 7 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
28/03/2022 13:59 | |
Gentilissimi buongiorno,
avrei bisogno del Vs. aiuto per recuperare tutte le informazioni utili contenute in diversi fogli.xlsx al fine di creare un unico DB. In allegato file di esempio ed in giallo le informazioni che avrei bisogno di estrapolare da ogni singolo foglio e riepilogare in un foglio di recap.
Vi ringrazio anticipatamente per l'attenzione e l'aiuto.
Lorenza Lorenza
Excel 97-2003
Excel 2007 |
|
| | Post: 4.816 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
28/03/2022 14:14 | |
Ciao
Puoi indicare da quali celle degli altri fogli provengono i dati riportati su Riepilogo?
Alfredo |
| | Post: 7 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
28/03/2022 14:58 | |
Gentile Alfredo,
ho provato ad indicare meglio con i colori i diversi campi.
Spero che sia di più facile lettura.
Grazie Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 4.817 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
28/03/2022 17:45 | |
Ciao Lorenza
Prova questa macro
vb Sub riporta()
Dim ur As Long
Dim rng As Range
Dim cel As Range
ur = Foglio1.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Foglio1.Range("A2:A" & ur)
For Each cel In rng
Cells(cel.Row, 2).Value = Sheets(cel.Value).Cells(21, 3).Value
Cells(cel.Row, 3).Value = Sheets(cel.Value).Cells(21, 4).Value
Cells(cel.Row, 4).Value = Sheets(cel.Value).Cells(8, 3).Value
Cells(cel.Row, 5).Value = Sheets(cel.Value).Cells(16, 3).Value
Cells(cel.Row, 6).Value = Sheets(cel.Value).Cells(10, 3).Value
Cells(cel.Row, 7).Value = Sheets(cel.Value).Cells(12, 3).Value
Cells(cel.Row, 8).Value = Sheets(cel.Value).Cells(14, 3).Value
Cells(cel.Row, 9).Value = Sheets(cel.Value).Cells(22, 3).Value
Cells(cel.Row, 10).Value = Sheets(cel.Value).Cells(22, 4).Value
Cells(cel.Row, 11).Value = Sheets(cel.Value).Cells(9, 3).Value
Cells(cel.Row, 12).Value = Sheets(cel.Value).Cells(17, 3).Value
Cells(cel.Row, 13).Value = Sheets(cel.Value).Cells(11, 3).Value
Cells(cel.Row, 14).Value = Sheets(cel.Value).Cells(13, 3).Value
Cells(cel.Row, 15).Value = Sheets(cel.Value).Cells(15, 3).Value
Cells(cel.Row, 16).Value = Sheets(cel.Value).Cells(25, 3).Value
Cells(cel.Row, 17).Value = Sheets(cel.Value).Cells(25, 4).Value
Cells(cel.Row, 18).Value = Sheets(cel.Value).Cells(26, 3).Value
Cells(cel.Row, 19).Value = Sheets(cel.Value).Cells(26, 4).Value
Cells(cel.Row, 20).Value = Sheets(cel.Value).Cells(27, 3).Value
Cells(cel.Row, 21).Value = Sheets(cel.Value).Cells(27, 4).Value
Cells(cel.Row, 22).Value = Sheets(cel.Value).Cells(28, 3).Value
Cells(cel.Row, 23).Value = Sheets(cel.Value).Cells(28, 4).Value
Cells(cel.Row, 24).Value = Sheets(cel.Value).Cells(29, 3).Value
Cells(cel.Row, 25).Value = Sheets(cel.Value).Cells(29, 4).Value
Cells(cel.Row, 26).Value = Sheets(cel.Value).Cells(30, 3).Value
Cells(cel.Row, 27).Value = Sheets(cel.Value).Cells(30, 4).Value
Cells(cel.Row, 28).Value = Sheets(cel.Value).Cells(31, 3).Value
Cells(cel.Row, 29).Value = Sheets(cel.Value).Cells(31, 4).Value
Cells(cel.Row, 30).Value = Sheets(cel.Value).Cells(33, 3).Value
Cells(cel.Row, 31).Value = Sheets(cel.Value).Cells(33, 4).Value
Cells(cel.Row, 32).Value = Sheets(cel.Value).Cells(42, 4).Value
Cells(cel.Row, 33).Value = Sheets(cel.Value).Cells(42, 5).Value
Cells(cel.Row, 34).Value = Sheets(cel.Value).Cells(43, 4).Value
Cells(cel.Row, 35).Value = Sheets(cel.Value).Cells(43, 5).Value
Cells(cel.Row, 36).Value = Sheets(cel.Value).Cells(44, 4).Value
Cells(cel.Row, 37).Value = Sheets(cel.Value).Cells(44, 5).Value
Next cel
End Sub
Alfredo |
| | Post: 6.725 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
28/03/2022 20:17 | |
Ciao Lorenza secondo il mio parere, l'impostazione che hai scelto non è ottimale, per un database meglio una scelta verticale per le voci ed una scelta orizzontale per i codici, molto più rapida la cousultazione e confronto.
però ho notato che non hai uno standard per il modulo dei codici, questo non va bene, in quanto il riepilogo deve trovare le voci sempre nella stessa posizione per riportarli nelle voci corrispondenti altrimenti Excel ti riporterà un dato errato o non relativo alla voce.
per cui ho scelto come base il foglio del 1° codice "AAAA AAA" se gli altri fogli non rispecchiano l'impostazione riporterà dati errati.
a questo punto prendi il foglio del codice che ho detto ed usalo come base quando devi inserire un nuovo codice fai copia del foglio e cambi il nome del foglio mettendo il nome del codice.
ho aggiunto un nuovo foglio "Riepilogo2" in cui ho estrapolato i dati, le intestazioni delle colonne sono i codici e la colonna "A" sono le voci che hai indicato in orizzontale.
logicamente se aggiungi un nuovo codice dovrai anche aggiungerlo nelle intestazioni del foglio riepilogo, altrimenti non ti riporta il codice che hai aggiunto.
questo il risultato
per un aggiornamento basta cliccare l'icona cerchio verde freccia rossa, riporterà tutte le variazioni effettuate sui fogli dei codici, relativamente alle voci indicate.
ti allego anche il file.
Ciao By Sal (8-D se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 8 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
29/03/2022 10:17 | |
Buongiorno Sal,
il problema è proprio quello che hai individuato.
Le schede non sono identiche, la difficoltà sta proprio lì. Per questo ho estrapolato tre schede tipo, in modo tale capire se fosse prossibile creare un progetto VBA che consentisse di estrarre le informazioni contenute nei tre diversi form che rappresentano la stragrande maggioranza delle schede presenti. Putroppo, si tratta di un migliaio di schede e sarebbe un lavoro troppo oneroso standardizzarle.
Grazie Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 6.726 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
29/03/2022 10:28 | |
Ciao Lorenza, ma almeno le voci sono identiche da quelle che hai indicato, anche se sono posizionate diversamente nella scheda.
cioè esempio
Materiale componente 1
lasciando perdere il maiuscolo o minuscolo la voce non sia indicata come
Materiale componente1
Materiale componente 1
come vedi anche se sembrano identiche non lo sono.
se sono identiche allora vedo come posso fare.
nel frattempo per i nuovi codici cerca di usare una base come ti ho detto.
fai sapere, Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 9 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
29/03/2022 10:33 | |
Buongiorno Alfredo,
grazie per l'aiuto, tuttavia, la MACRO non funziona, temo che dovrei adattarla. Attualmente utilizzo la seguente macro per individuare all'interno dei fogli e riportare i valori "prezzi":
Sub ricerca()
Dim ws As Worksheet
Dim Nome1 As String, Nome2 As String, RigaA As Object, Area As Range
Dim RR As Long, R As Long, Uriga As Long, X As Long
Application.ScreenUpdating = False
Uriga = Sheets("RIEPILOGO").Range("A" & Rows.Count).End(xlUp).Row
If Uriga > 1 Then
Sheets("RIEPILOGO").Range("A2:C" & Uriga).ClearContents
End If
R = 2
Nome1 = "PZ.X100"
Nome2 = "PZ.X100 (+25%)"
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "RIEPILOGO" Then
ws.Activate
Sheets("RIEPILOGO").Cells(R, 1) = ws.Name
Uriga = ws.Range("E" & Rows.Count).End(xlUp).Row
Set Area = ws.Range(ws.Cells(1, 5), ws.Cells(Uriga, 5))
Set RigaA = Area.Find(Nome1, LookIn:=xlValues, LookAt:=xlWhole)
If Not RigaA Is Nothing Then
RR = RigaA.Row
Sheets("RIEPILOGO").Cells(R, 2) = ws.Cells(RR, 6)
End If
Set RigaA = Area.Find(Nome2, LookIn:=xlValues, LookAt:=xlWhole)
If Not RigaA Is Nothing Then
RR = RigaA.Row
Sheets("RIEPILOGO").Cells(R, 3) = ws.Cells(RR, 6)
End If
R = R + 1
End If
Next ws
Sheets("RIEPILOGO").Activate
Application.ScreenUpdating = True
MsgBox "Fatto"
End Sub
Si riuscirebbe a adattare questa macro per riportare le informazioni che avevo evidenziato nel file?
Grazie [Modificato da by sal 29/03/2022 15:36] Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 4.818 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
29/03/2022 11:31 | |
Ciao Lorenza
La macro l'ho scritta tenendo presente il risultato da te inserito sul foglio riepilogo ed eseguendola si ottiene lo stesso risultato.
Cosa c'è che non va?
Se il risultato è diverso da quello che hai postato allora devi dirlo e riallega il file mettendo sul foglio Riepilogo il risultato che vuoi ottenere (basta un solo rigo) [Modificato da alfrimpa 29/03/2022 11:32]
Alfredo |
| | Post: 10 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
29/03/2022 11:34 | |
Grazie Sal!
L'idea è proprio quella di abbandonare il file e creare un DB che parta dalle informazioni collezionate ed implementare un programma più user friendly e facile da aggiornare.
Le diciture sono identiche in tutte le schede (tranne le voci altri componenti che di solito sono dalla riga 38).
Riallego il file esempio modificato con i suggerimenti che mi ha fornito.
Grazie
Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 6.727 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
29/03/2022 13:00 | |
Ciao Lorenza, il primo passo, è riportare tutti i tuoi dati dalle schede al database che hai impostato.
Controllare se è coerente con i dati e non ci siano salti oppure dati errati, poi creare una tabella di riepilogo come un foglio scheda Standard, nel quale si possa richiamare il codice, visualizzare i dati relativi, nel caso modificarli e riportarli nel database, ed anche avere la possiiblità di aggiungere nuovi codici.
la difficoltà al momento è far combaciare i dati delle singole schede con le voci del database anche perche se pur raggruppate hanno voci identiche e non è facile far discernere, del tipo "Tipo pressa" ce ne sono 4
Tipo Pressa Pressa1
Tipo Pressa 3,28
Tipo Pressa Pressa2
Tipo Pressa 3,58
vedo che posso combinare, Ciao By Sal (8-D se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 4.819 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
29/03/2022 13:19 | |
Lorenza io sono in attesa di sapere perchè hai detto che la mia macro non funziona
Alfredo |
| | Post: 11 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
29/03/2022 14:20 | |
Eccomi Alfredo.
Se faccio girare la MACRO sia sul file di esempio che sul file di produzione esce l'errore che allego, ma non avendo molta dimestichezza con linguaggio VBA non sono in grado di capire il perché.
Per questa ragione Le ho risposto postando l'attuale MACRO per capire se si potesse adattare al nuovo obiettivo.
Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 12 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
29/03/2022 14:27 | |
Gentile Sal,
purtroppo non ho modo di standardizzare le schede (sono migliaia).
Data la griglia di esempio che ho inoltrato (ESEMPIO-1) non si riesce proprio a costruire una macro che riporti i dati evidenziati?
Qualche post fa ho riportato l'attuale MACRO "ricerca" che utilizzo per collezionare i dati "prezzi" e, come scrivevo al Sig. Alfredo, si può adattare?
Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 4.820 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
29/03/2022 15:05 | |
L'errore che hai segnalato deriva quasi certamente dal fatto che in colonna A del foglio Riepilogo c'è qualche stringa che non c'è come foglio.
Se c'è esatta corrispondenza l'errore non si verifica.
Alfredo |
| | Post: 6.728 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
30/03/2022 09:37 | |
Ciao Cerchiamo di fare una cosa alla volta, prima un controllo preventivo, poi si potrà procedere al resto
la prima cosa dobbiamo trovare tutti i codici che hanno la stessa impostazione della scheda, ti ho preparato un foglio che fa questo tipo di passaggio, al momento è soltanto un modello, però potrai sviluppare tu sulla base di questo le impostazioni delle altre schede.
visto che i quadri della scheda sono 3, Scheda, Costo e Distinta base, o preso le voci iniziali e l'indirizzo della cella, poi ho fatto un controllo con i fogli codici e mi sono fatto riportare tutti i nomi dei codici che corrispondono con il modello, a questo punto i codici trovati possono già passare al Database con questa impostazione, facendo un altro modello possiamo trovare altri codici che corrispondono al modello, fino a che alla fine avremo tutti i codici ognuno relativi a diversi modelli di scheda, poi sulla base di questo possiamo sviluppare il database.
non ho considerato i dati della riga 38 in poi che si possono fare con una macro dedicata, l'importante è l'impostazione dei dati del codice
ti metto un file con il foglio 1 e la macro che seleziona i codici uguali al modello, il primo modello e quello relativo al tuo codice "AAAA AA" del tuo file.
copia il "Foglio1" nel tuo file originale e lancia la macro questa per conoscere una prima "trance" di codici
Sub controllo()
Dim sh1 As Worksheet, fg As Worksheet
Dim r, c, d, x, y, t, n, rng
Set sh1 = Worksheets("Foglio1")
sh1.Activate
Application.ScreenUpdating = False
rng = Range("A2:B44")
Columns("D:D").ClearContents
sh1.Cells(1, 4) = "Codici"
r = 2: c = 4
For x = 1 To Sheets.Count
Set fg = Worksheets(Sheets(x).Name)
If fg.Name = "Foglio1" Or fg.Name = "Base" Or fg.Name = "Riepilogo" Then GoTo 1 'fogli da escludere
fg.Activate
t = 0: n = 0
For y = 1 To UBound(rng)
If fg.Range(rng(y, 2)) = rng(y, 1) Then n = n + 1
Next y
If n = 43 Then sh1.Cells(r, c) = fg.Name: r = r + 1
1 Next x
sh1.Activate
End Sub
inserisci i nomi dei fogli da escudere allungando nel caso o sostituire "Base" e "Riepilogo" che sicuramente non ci sono nel tuo file
questo un abbozzo del database, come vedi le differenze maggiori sono nel quadro "Distinta base" ultima immagine, che i dati non vengono riportati nella voce giusta, in quanto il modello è differente, ti allego le immagini, per i quadri ma è un unico foglio.
Come vedi fino a "sacchetto nylon" i dati sono coerenti dopo si ingarbugliano, come mai alcuni hanno la "tappatrice" ed altri no sarà un modello diverso senza tappatrice
ti allego il file, fai sapere, Ciao By Sal [Modificato da by sal 30/03/2022 09:54] se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 13 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
30/03/2022 12:03 | |
Grazie Sal!
Appena ho un attimo mi applico e mando feedback.
Buona giornata Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 6.729 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
30/03/2022 16:40 | |
Ciao Lorenza, dimmi queste 2 voci sono identiche oppure sono diverse, nel senso che sono modelli che hanno funzioni diverse, occupano la stessa posizione devo capire se devo creare nel database voci differenti
Voci simili Confez. Automatico Confez. Interno
stessa Posiz. Confez. Astucciatrice Confez. Esterno
fai sapere, ciao By sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 14 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
30/03/2022 17:27 | |
Buonasera Sal,
ho provato ad applicare la MACRO al file di esempio-1 e, l'unico codice articolo che ha riportato è il codice A, in quanto è l'unico con il modello presentato. E' così che doveva andare? Oppure la MACRO avrebbe dovuto riportare anche per gli altri codici le informazioni contenute nelle celle se identiche?
Mi scuso, perché queste domande le sembreranno banali, ma la mia conoscenza del linguaggio VBA è davvero limitata ed è difficile per me codificare le istruzioni.
Alla luce di quanto sopra, se io modificassi il foglio1 prendendo come riferimento la scheda G (struttura molto più comune tra le schede), la MACRO dovrebbe funzionare e riportarmi tutti i codici che hanno questo modello senza modificarne le istruzioni, corretto?
Nell'attesa La ringrazio.
Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 6.730 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
30/03/2022 17:33 | |
Ciao Lorenza si, la macro trova tutti i codici che hanno la stessa struttura e fa un elenco dei codici, o meglio del nome del foglio del codice.
in questo modo si incominciano a filtrare i codici con la stessa struttura,
se mi mandi i codici che hanno maggiormente la stessa struttura ti preparo una macro che faccia gli elenchi,
mi rispondi al mio post precedente, devo vedere come posso impostare la basa per il database, scusa l'impiccio delle parole.
Ciao By Sal (8-D se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 15 | Registrato il: 23/01/2014
| Età: 43 | Utente Junior | 97-2003 | | OFFLINE | |
|
31/03/2022 10:38 | |
Buongiorno Sal,
ho verificato le casistiche presenti in diverse altre schede e, purtroppo, le voci sono diverse.
Purtroppo le celle sono state customizzate dall'operatore al bisogno in funzione della tipologia di articolo, non considerando di tenere standard il modello.
Per recuperare le informazioni, devo confrontarmi con il referente, in modo tale da individuare tutte le possibili casistiche e fornire questa informazione più precisa.
Per quanto riguarda adattare la MACRO per individuare le schede con lo stesso modello, ho capito come funziona e la sto adattando per individuare i vari formati.
Credo che ci impiegherò tempo, appena ho una situazione, La aggiorno.
Grazie!
Lorenza
Excel 97-2003
Excel 2007 |
| | Post: 6.732 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
31/03/2022 11:54 | |
Ciao Lorenza, fai un elenco o tabella per ogni formato che riesci a trovare, in questo modo contando i codici trovati, riesci a sapere quanti sono fuori formato, e puoi anche estrapolare i codici rimasti
apetto notizie. Ciao By Sal (8-D se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
|
|