| | Post: 61 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
25/01/2018 09:03 | |
Ciao a tutti, avrei un'esigenza di copiare dei dati dal foglio1 al foglio2 se rispettate determinate condizioni
Allego un esempio in cui descrivo a seconda dei casi cosa vorrei ottenere
Ho fatto delle prove con la formula "=SE(VAL.ERRORE(TROVA("illuminazione";C1));"NO";"SI")"
ma non ne vengo a capo
nel foglio 2 dovrebbe essere creato un elenco contenente le varie condizioni una per ogni riga
Grazie [Modificato da Chiara-ExcelForum 25/01/2018 09:08] |
|
| | Post: 2.608 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
25/01/2018 09:27 | |
Buona giornata, Chiara; personalmente proverei a risolvere con VBA ma non so se questo approccio sia conforme alle Tue necessità. Buon Lavoro. A disposizione. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 61 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
25/01/2018 09:44 | |
Buongiorno, la soluzione del VBA per me andrebbe benissimo... il problema è che non so come scrivere il codice
se gentilmente potesse aiutarmi, mi farebbe una grande cortesia |
| | Post: 2.610 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
25/01/2018 10:07 | |
Buona giornata, Chiara; ora sto uscendo, nel pomeriggio, appena rientro provo a sviluppare un Codice VBA che soddisfi la Tua richiesta. Ad ogni buon conto vedrai che ci saranno altri Utenti perfettamente in grado di proporti soluzioni alternative; ti lascio in buone mani. A disposizione. Buon lavoro. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 62 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
25/01/2018 10:17 | |
Ti ringrazio.... ho già in effetti "testato" la professionalità e disponibilità degli altri utenti
Grazie
Buona giornata |
| | Post: 2.611 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
25/01/2018 16:01 | |
Buon pomeriggio, Chiara; sono finalmente riuscito a dedicare un pò di tempo alla tua richiesta. Sarò sincero, ho tribolato un pò a gestire le "Celle unite" ma forse ho trovato la quadra. Prova ad eseguire qualche prova con il File in allegato poi se hai problemi, assieme, possiamo cercare di risolvere. A disposizione. Buon Lavoro e buona serata Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 63 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
25/01/2018 16:24 | |
E' semplicemente perfetto!!!!
Grazie
Ti chiederei solamente una cortesia: potresti commentare il codice?
Vorrei adattarlo per ottenere che se aggiungo una colonna F faccia le stesse cose
Grazie moltissimo |
| | Post: 2.617 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
25/01/2018 17:36 | |
Buona sera, Chiara; ovviamente posso commentare il Codice VBA, devi solo avere un pò di pazienza; oggi è una giornataccia! Buona serata. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 67 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
25/01/2018 18:00 | |
tutto il tempo che serve....... ci mancherebbe!!!!! |
| | Post: 2.619 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
25/01/2018 21:03 | |
Buona sera, Chiara;
ecco il Codice con i commenti.
Option Explicit ' Obbliga a definire tutte le Variabili e le Costanti
Sub Trasferisci() ' Nome del Codice VBA
Application.ScreenUpdating = False ' Impedisce il refresh durante l'esecuzione
Dim URc As Long, URp As Long, x As Long, Rgx As Long ' Definisce le Variabili Long
Const Dts As String = "DataSet" ' Definisce la Costante Dts
Const Rpr As String = "Report" ' Definisce la Costante Rpr
Sheets(Rpr).Select ' Seleziona il Foglio di lavoro Report
With Worksheets(Dts) ' With si riferisce ad un oggetto, in questo caso al Foglio di lavoro DataSet
Cells.Clear ' Cancella tutto, Record e Formati, nel Foglio di lavoro attivo
URc = .Range("A" & Rows.Count).End(xlUp).Row ' Rende la riga nella quale riside l'ultimo Record nel Foglio di lavoro DataSet
For x = 1 To URc ' Definisce un Ciclo partendo dalla Riga 1 all'ultima Riga nel Foglio di lavoro DataSet
Rgx = 1 ' Ho utilizzato Rgx come variabile di comodo
If .Cells(x, 1) <> "" Then ' Controlla che nella Colonna "A" della Riga "x" del Foglio di lavoro DataSet contenga un Valore
If .Cells(x, 3) = "Illuminazione" Then ' Se nella Cella "C" della riga controllata da "x" ci sia la descrizione Illuminazione
URp = Range("B" & Rows.Count).End(xlUp).Row ' Rende la riga nella quale riside l'ultimo Record nel Foglio di lavoro Report
If URp = 1 Then URp = -1 ' Nel caso in cui la prima Riga sia la Riga 1 allora Urp assume il valore di -1
Rgx = Rgx + 1 ' Rgx viene incrementata di una unità quando ho ritenuto ciò sia necessario
Range(.Cells(x, 1), .Cells(x, 2)).Copy Cells(URp + Rgx, 1) ' Copia i valori delle Colonne "A:B" di "DataSet" nella prima Riga libera di "Report"
Cells(URp + Rgx, 3).Value = .Cells(x, 4).Value ' Copia i valori della Colonna "D" di "DataSet" nella Colonna "C" di "Report"
Cells(URp + Rgx, 4).Value = "-" ' Scrive il valore "-" di "DataSet" nella Colonna "D" di "Report"
Cells(URp + Rgx, 5).Value = .Cells(x, 3).Value ' Copia i valori della Colonna "C" di "DataSet" nella Colonna "E" di "Report"
Rgx = Rgx + 1 ' Rgx viene incrementata di una unità
Cells(URp + Rgx, 2) = .Cells(x, 2) ' Copia i valori delle Colonne "A:B" di "DataSet" nella seconda Riga libera di "Report"
Cells(URp + Rgx, 3).Value = .Cells(x, 5).Value ' Copia i valori della Colonna "E" di "DataSet" nella Colonna "C" di "Report"
Cells(URp + Rgx, 4).Value = "-" ' Scrive il valore "-" di "DataSet" nella Colonna "D" di "Report"
Cells(URp + Rgx, 5).Value = .Cells(x, 3).Value ' Copia i valori della Colonna "C" di "DataSet" nella Colonna "E" di "Report"
Range(Cells(URp + Rgx - 1, 1), Cells(URp + Rgx, 1)).Select ' Seleziona le righe nelle quali applicare la Funziione "Celle unite"
With Selection ' Inizio della Procedura per unire le Celle della Colonna "A"
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
End With ' Fine della Procedura per unire le Celle della Colonna "A"
Else ' Se nella Cella "C" della riga controllata da "x" ci sia una descrizione diversa da Illuminazione allora ...
URp = Range("B" & Rows.Count).End(xlUp).Row ' Rende la riga nella quale riside l'ultimo Record nel Foglio di lavoro Report
If URp = 1 Then URp = -1 ' Nel caso in cui la prima Riga sia la Riga 1 allora Urp assume il valore di -1 ( non dovrebbe mai accadere però ...)
Rgx = Rgx + 1 ' Rgx viene incrementata di una unità
Range(.Cells(x, 1), .Cells(x, 3)).Copy Cells(URp + Rgx, 1) ' Copia i valori delle Colonne "A:C" di "DataSet" nella prima Riga libera di "Report"
Cells(URp + Rgx, 4).Value = "-" ' Scrive il valore "-" di "DataSet" nella Colonna "D" di "Report"
Cells(URp + Rgx, 5).Value = .Cells(x, 4).Value ' Copia i valori della Colonna "D" di "DataSet" nella Colonna "E" di "Report"
Cells(URp + Rgx, 6).Value = "-" ' Scrive il valore "-" di "DataSet" nella Colonna "F" di "Report"
Cells(URp + Rgx, 7).Value = .Cells(x, 5).Value ' Copia i valori della Colonna "E" di "DataSet" nella Colonna "G" di "Report"
Rgx = Rgx + 1 ' Rgx viene incrementata di una unità
Cells(URp + Rgx, 2).Value = .Cells(x, 2).Value ' Copia i valori della Colonna "B" di "DataSet" nella Colonna "B" di "Report"
Cells(URp + Rgx, 3).Value = .Cells(x, 4).Value ' Copia i valori della Colonna "E" di "DataSet" nella Colonna "C" di "Report"
Rgx = Rgx + 1 ' Rgx viene incrementata di una unità
Cells(URp + Rgx, 2).Value = .Cells(x, 2).Value ' Copia i valori della Colonna "B" di "DataSet" nella Colonna "B" di "Report"
Cells(URp + Rgx, 3).Value = .Cells(x, 5).Value ' Copia i valori della Colonna "E" di "DataSet" nella Colonna "C" di "Report"
Range(Cells(URp + Rgx, 1), Cells(URp + Rgx - 2, 1)).Select ' Seleziona le righe nelle quali applicare la Funziione "Celle unite"
With Selection ' Inizio della Procedura per unire le Celle della Colonna "A"
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = True
End With ' Fine della Procedura per unire le Celle della Colonna "A"
End If ' Termina la seconda condizione If
End If ' Termina la prima condizione If
Next x ' Incrementa il Ciclo For x
End With ' Termina l'attribuzione di Worksheets(Dts)
Cells(1, 2).Select ' Pone il Cursore in Cella "B1"
Application.ScreenUpdating = True ' Ripristina il refresh durante l'esecuzione
End Sub ' Termina il Codice VBA
Quando mi chiedono di commentare un Codice o una Procedura completa, preferisco affidarmi a Skype; il dialogo è sicuramente più veloce e comprensibile.
Buona serata.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 69 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
26/01/2018 08:07 | |
|
| | Post: 2.622 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
26/01/2018 10:04 | |
Buona giornata, Chiara; consentimi un consiglio. Ho iniziato ad entrare nel mondo VBA costruendo delle piccole procedure tramite il "registratore di macro". Studiando la struttura che veniva proposta, ho iniziato a modificare i Codici VBA e costruirne di nuovi. Ovviamente mi sono documentato con libri acquistati o disponibili in biblioteca. Ora dispongo di un File, che ho denominato Macromag, che contiene un numero veramente consistente di piccoli Codici VBA. Questo File viene caricato automaticamente all'apertura di Excel ma "rimane nascosto"; questo mi consente di poter accedere a tutti i Codici che, con molta pazienza, ho registrato in Macromag. Senza questo File sarei veramente in difficoltà. P.s. In Macromag c'è anche un Codice che ho scoppiazzato dalla tua discussione "Ordina solo celle occupate"; in quella Discussione ho apprezzato la tua disponibilità nel condividere una possibile soluzione e anche per questo motivo ti sei meritata un "mi paice" da parte mia.A disposizione. Buon Lavoro. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 70 | Registrato il: 22/12/2017
| Città: MILANO | Età: 44 | Utente Junior | Excel2016 | | OFFLINE | |
|
26/01/2018 10:51 | |
non puoi immaginare quanto l'aver potuto contribuire al forum, anche se in minima parte, mi faccia piacere.
In questo forum ( come in altri che ho utilizzato in precedenza / che tuttora utilizzo ) sono tutti molto disponibili e soprattutto ( questo ci tengo a sottolinearlo ) lo fanno / fate in maniera assolutamente gratuita, evidentemente per una forma di altruismo / voglia di divulgare il codice Vba al maggior numero di persone, indice della vostra grande passione
Grazie davvero |
| | Post: 210 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
26/01/2018 14:05 | |
@ GiuseppeMN
Ciao,
approfittando in maniera bieca della tua disponibilità, hai pensato/ hai voglia di condividere Macromag ?
Grazie se puoi.
[Modificato da BG66 26/01/2018 14:05] BG66
Excel 2010 |
| | Post: 2.623 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
26/01/2018 16:41 | |
Buon pomeriggio, BG66; posso farlo ma prima devo "ripurirlo" per bene perchè ci sono le mie Password e quelle preferisco non condividerle. Lasciami solo qualche giorno perchè in questo periodo sono pittosto impegnato; diciamo che posso pubblicarlo verso metà della prossima settimana. Grazie della Tua Attenzione. Buona serata e buon fine settimana. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 212 | Registrato il: 13/12/2015
| Città: MILANO | Età: 58 | Utente Junior | 2010 | | OFFLINE | |
|
26/01/2018 16:52 | |
Grazie in anticipo.
BG66
Excel 2010 |
| | Post: 2.630 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
28/01/2018 12:40 | |
Buona giornata a Tutti; come promesso allego il File Macromag (il mio "magazzino dei Codici VBA che utilizzo con maggior frequenza). Sono consapevole che potrebbe risultare di non facile interpretazione; per questo motivo resto a disposizione per eventuali ulteriori chiarimenti. Buon fine settimana. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
|
|