auto inserimento copia incolla
Hai un problema con Excel? 
auto inserimento/ copia incolla
di vm1984 (utente non iscritto) data: 22/05/2014 16:16:10
Buongiorno,
Ho usato qualche mese fa questo forum per un consiglio e sono rimasto stupito della gentilezza e professionalita degli user. Mi ritrovo nuovamente ad avere un problema che a me sembra irrisolvibile. Vi sarei grato poteste darmi un vostro parere. Vi spiego brevemente (facendo riferimento a file allegato).
Ho un foglio di circa 500000 righe, il che rende impossibile fare quello che voglio fare 'a mano'. Cio che vorrei fare è copiare i valori in riga 1 (fino a colonna D compresa) nelle righe 2, 3 e 4. Lo stesso per la riga 5 la quale va copiata in riga 6 (sempre fino a colonna D) e riga 7 in riga 8,9,10,11. Va notato che purtroppo gli intervalli non sono regolari e che data la lunghezza del foglio non posso copiare a mano una formula per ogni cella . Mi rendo conto che il problema è complesso me se qualcuno avesse un idea su come procedere ve ne sarei infinitamente grato.
Grazie
di nichicanta (utente non iscritto) data: 22/05/2014 17:02:15
Ciao vm1984, io l'ho pensata in questo modo ( ti allego parta del codice che dovrai completare con i range di tuo interesse e che fa quello che vedi, il listato diventerebbe un po lungo ma penso che sia efficace.
Ai più sperti altre possibili soluzioni.
Option Explicit
Public Sub copia_incolla()
Dim sh As Worksheet
Set sh = ThisWorkbook.Worksheets("Foglio1")
With sh
.Range("A1:D1").Copy
.Range("A2:D4").PasteSpecial
.Range("A5:D5").Copy
.Range("A6:D6").PasteSpecial
Application.CutCopyMode = False' questo lo devi aggiungere alal fien dei range da te inseriti e che serve a togliere il riquadro intorno alle celle da copiare
End With
Set sh = Nothing
End Sub
|
di lepat (utente non iscritto) data: 22/05/2014 17:15:09
io invece non ho capito, mi piacerebbe vedere un file di esempio con i dati nel primo foglio ed il risultato desiderato nel secondo foglio
di vm1984 (utente non iscritto) data: 22/05/2014 17:32:54
Mi scuso per la poca chiarezza. Proverò al piu presto la soluzione di nichicanta per la quale lo ringrazio. Ciononostante da quanto ho capito la tua soluzione prevede l immissione del range manualmente, cosa che non posso fare dato la grandezza del foglio. Per quanto riguarda le colonne, il range è sempre uguale cioè fino a colonna D ma per le righe il discorso è diverso: non posso sapere il range nel quale incollare. Nella mia ignoranza pensavo ad un commando che copiasse in tutte le celle vuote il valore precedente, per cosi dire. Intanto allego file con soluzione desiderata. Grazie mille a tutti e due.
di lepat (utente non iscritto) data: 22/05/2014 18:34:44
prova questa
Sub FillCells()
LR = Cells(Rows.Count, "E").End(xlUp).Row
Set MyRange = Range("A1:E" & LR)
MyRange.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "=R[-1]C"
MyRange.Value = MyRange.Value
End Sub |
di vm1984 (utente non iscritto) data: 22/05/2014 18:44:19
Wow, grazie mille lepat. Perdonami l ignoranza, ma come faccio ad inserire la formula? Grazie mille
di lepat (utente non iscritto) data: 22/05/2014 18:53:15
non è una formula, è una macro vba
h t t p://www.mrwebmaster.it/visual-basic/guide/guida-vba/
di vm1984 (utente non iscritto) data: 22/05/2014 19:00:12
Grazie mille: la proverò appena ho il dataset sotto mano
di lepat (utente non iscritto) data: 22/05/2014 19:01:14
allego il file mocklepat
di nichicanta (utente non iscritto) data: 22/05/2014 19:16:47
Complimenti lepat, per favore poiché sono autodidatta ( mi aiuto molto con questo forum e ricerche varie su internet) potresti commentare rigo per rigo il codice da te postato, vorrei capire la logica da te seguita (anche se ti è stato chiesto questo).
Grazie e buona serata.
di lepat (utente non iscritto) data: 22/05/2014 19:40:47
LR = Cells(Rows.Count, "E").End(xlUp).Row ' ultima riga della colonna E
Set MyRange = Range("A1:E" & LR) ' definisce il range su cui lavorare
MyRange.SpecialCells(xlCellTypeBlanks).Select ' seleziona tulle le celle vuote del range
Selection.FormulaR1C1 = "=R[-1]C" ' inserisce la formula per copiare la cella sopra su quella sotto
MyRange.Value = MyRange.Value ' copia e incolla valori
di nichicanta (utente non iscritto) data: 23/05/2014 08:51:03
Grazie lepat, sono molto affascinato dalle vostre esperienze, conoscenze e competenze nel ricercare e creare soluzioni veloci e risolutive di ogni nostro quesito.
Vi stimo per tutto il vostro impegno e la vostra dedizione "prettamente gratuita".
di lepat (utente non iscritto) data: 23/05/2014 09:01:34
Anche io sono un autodidatta come penso la maggior parte degli utenti del forum, in rete si trova di tutto, basta aver la volontà di cercare e soprattutto voler capire, come stai facendo tu.
Vuoi Approfondire?