Copia cella in altra vuota
Hai un problema con Excel? 
Copia cella in altra vuota
di DELTAmax data: 21/10/2015 15:37:45
Salve....
Sono nuovo sia sul forum che per quanto riguarda excel....
Volevo chiedervi come fare a copiare il valore scritto all'interno di una cella in un'altra dove però non ci deve essere scritto nessun valore e nessuna funzione....
Come posso fare??....
Io avevo scritto questo, ma a quanto pare non funzione e non so se bisogna creare una macro dedicata....
=SE(C1>"";(D1=E1);"")
=SE(C2>"";(D2=E2);"")
=SE(C3>"";(D3=E3);"")
=SE(C4>"";(D4=E4);"")
ECC ECC
Praticamente:
D1 D2 D3 D4 ecc sono celle vuote
E1 E2 E3 E4 ecc sono celle dove di solito c'è una formula che prende il valore in base ad una funzione inserita all'interno...
C1 C2 C3 C4 ecc sono celle dove quando inserisco un valore mi da l'imput di copiare la cella E1 in D1 (o E2 in D2, ecc)
Spero di essermi spiegato bene...
Vi ringrazio per la disponibilità...
di alfrimpa data: 21/10/2015 15:42:42
Ciao DELTAmax
Premesso che non ho ben capito quello che vuoi ottenere credo che per fare quello che chiedi occorra il VBA.
Allega un file di esempio (in alto a destra della discussione c'è il pulsante "Allega file") con la situazione di partenza ed il risultato che vuoi raggiungere.
Alfredo
di DELTAmax data: 21/10/2015 15:56:15
Ci provo, ma secondo me fai ancora piu confusione...
di alfrimpa data: 21/10/2015 16:01:14
In effetti ho capito meno di prima
Non puoi fare un esempio pratico (con numeri, formule o altro)?
Alfredo
di Luca73 data: 21/10/2015 16:03:14
Ciao DELTAmax
come giustamente dice Alfredo (che saluto) non è possibile fare quello che vuoi solo usando excel. Excel non permette (senza utilizzo di una macro (VBA) di compilare una cella.
Dovresti spiegare per quale motivo non vuoi mettere una formula in D1-D4
Ciao
Luca
di DELTAmax data: 21/10/2015 16:04:19
Se potessi mettere le formule numeri e altro avrei risolto :D
Non so come scriverli...
Praticamente sarebbe una formula che COPIA il risultato di una cella in un altra cella che però è vuota...
E' come fosse appunto un copia incolla...
di DELTAmax data: 21/10/2015 16:08:11
Forse mi sto complicando io la vita...perche tutto nasce dal fatto di avere formattazione condizionale su tutta una colonna...ma in questa colonna ci sono parti che non devono essere toccate, parti con parole, parti con risultati che cambiano in base a formule ecc ecc....
Per cui se io condiziono un'altra colonna con le celle vuote posso usare questi colori solo se la cella è piena ed in base a quello che c'è scritto all'interno....
E' difficile da spiegare....
Era molto piu facile spiegare quello che ho gia scritto, idem a fare...
di BS (utente non iscritto) data: 21/10/2015 16:08:50
ciao Delta
anche io ho avuto molte soddisfazioni da questo forum
ci provo, nonostante i mega cervelloni presenti.. (spero di non fare brutta figura) .. ahahaha
da cit: <<=SE(C1>"";(D1=E1);"")>>
in riferimento alla tua formula:
cella vuota dopo il C1> .. vuol dire che devi inserire un valore che non sia numero, basterebbe digitare anche uno spazio
se invece tu inserisci dei numeri la formula dovrebbe essere =SE(C1>0;..;..)
mentre l'input della condizione vero "(D1=E1)" non potrà mai essere accettata dalla funzione.
Non sapendo cosa scrivi nella cella C1 per far verificare la condizione prova a modificare la tua formula come segue
=SE(C1>0;E1;"") ...e così via nelle altre celle sotto.
nb. la formula che ti ho messo deve essere scritta nella Colonna "D"
di alfrimpa data: 21/10/2015 16:09:19
Così giusto per il gusto di rispondere "alla cieca" potresti provare la sottostante macro che copia il valore della cella A1 (contenente una formula) in B1.
Alfredo
Sub copia()
Range("a1").Copy
Range("B1").Select
ActiveSheet.PasteSpecial, xlValues
End Sub |
di DELTAmax data: 21/10/2015 16:15:43
La parte postata da BS non va bene, perch in quella maniera la copia avviena sempre nella cella dove scrivo quella formula, invece deve essere copiata in un'altra cella vuota...
Ora provo la macro....
Anche se non so esattamente come fare, volevo chiedere se le macro bisogna sempre attivarle a mano o è automatico...
di BS (utente non iscritto) data: 21/10/2015 16:18:49
bho . allora non ho capito cosa devi fare....
cosa intendi devi avere il risultato in un'altra cella vuota?
hai provato a spostare la mia formula nella cella che preferisci .. con gli stessi riferimenti?
di DELTAmax data: 21/10/2015 16:22:17
alfrimpa scusami, ma non riesco proprio a fare una macro
Riusciresti a farmi un file e mandarmelo?..
Comunque quella condizione deve avvenire per ogni riga ed in modo automatico...
di alfrimpa data: 21/10/2015 16:27:07
Ciao Delta
Ti ho allegato file con al macro qui sotto inserita (un po' diversa dalla precedenta che era sbagliata perché l'avevo scritta a memoria) che copia in C1 il valore della cella A3 contenente una formula.
Ma è solo uno spunto.
Alfredo
Sub copia()
Range("a3").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
|
di alfrimpa data: 21/10/2015 16:29:35
Si ma senza il tuo file con una spiegazione dettagliata (ed oltretutto, se ho capito bene, tu hai detto che non capisci nulla di VBA) non andiamo da nessuna parte.
Alfredo
di DELTAmax data: 21/10/2015 16:39:01
Ho provato a far partire la macro del file che mi hai mandato ma mi da errore....
L'ho sistemata ed ora va bene, c'erano dei rem di troppo credo...li ho cancellati ed ora funziona...
Premendo il tasto viene copiata la cella senza la formula....PERFETTO...
Ora, è ora di farla in automatico....come si fa??... xD
di DELTAmax data: 21/10/2015 16:45:11
Anzi....
per l'automatico meglio aspettare....
Abbiamo ottenuto quello che volevo....
ora viene copiata una sola cella....
Come si fa a fare la stessa operazione per tutta la colonna??....
tipo
C1 è la copia del valore di A1
C2 è la copia del valore di A2
C3 è la copia del valore di A3
ecc ecc....
di alfrimpa data: 21/10/2015 16:47:06
Forse non ci siamo capiti.
Senza un file reale che abbia la struttura del tuo non posso inventarmi il codice.
Allega il file e vedo cosa si può fare.
Alfredo
di alfrimpa data: 21/10/2015 16:53:55
Ora sono fuori. Appena rientro ti posto il codice.
Ma così andiamo avanti a spizzichi e bocconi.
Alfredo
di DELTAmax data: 21/10/2015 16:54:04
Ho allegato il tuo modificato come funziona sul mio pc....
premendo ora il tasto viene copiata E5 in G5...
Io vorrei fosse lo stesso per tutte le altre celle sotto E5
E6 copiata in G6
E7 copiata in G7
E8 copiata in G8
ecc ecc... all'infinito
di alfrimpa data: 21/10/2015 17:40:11
Ciao DELTAmax
la sottostante macro fa quello che hai chiesto.
Lascio a te il compito di capire cosa fa e come lo fa e di inserirla nel tuo file.
Alfredo
Sub copia()
Dim i As Long
Dim ur As Long
ur = Sheets("Foglio1").Range("e" & Rows.Count).End(xlUp).Row
For i = 5 To ur
Range("e" & i).Select
Selection.Copy
Range("g" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues
Next i
Application.CutCopyMode = False
End Sub
|
di DELTAmax data: 21/10/2015 20:06:34
FANTASTICO alfrimpa :D grazie mille...
Ci siamo quasi....
E' possibile far si che tutto quell'ambaradan di codice lavori in automatico senza dover premere bottoni e senza aver bottoni in giro per la pagina??....
di alfrimpa data: 21/10/2015 20:43:33
Che cosa intendi per "in automatico"?
Un "qualcosa" deve pur succedere per lanciare una macro e ci sono molti modi per farlo.
Dovresti dire tu, più o meno, che idea hai. Poi vedremo se realizzabile oppure no.
Alfredo
di DELTAmax data: 21/10/2015 20:55:44
Ok...
Tipo si potrebbe fare che all'inserimento del numero in una cella della colonna A si attiva la macro...
Praticamente inserisco il numero nella cella A5 (o qualsiasi altra della colonna A), viene eseguito il calcolo dentro la rispettiva cella nella stessa riga della colonna E (in questo caso E5) e nello stesso momento (visto l'inserimento in A) parte la macro che copia la cella E in G....
Spero si capisca...
di alfrimpa data: 22/10/2015 12:13:43
Ciao DELTAmax
Ti ho allegato il file File_Deltamax.xlsm che contiene la sottostante macro che funziona così.
Se si modifica una qualsiasi cella che va da A5 sino al numero dell'ultima riga piena della colonna E (nell'esempio A5:A22 ma se aggiungi una formula in E 23 la macro si adegua) i valori delle formule in colonna E vengono riportati in colonna G.
Questa macro, anche se perviene allo stesso risultato della precedente, adotta un approccio diverso nel senso che con effettua un copia/incolla valori della colonna E ma rende "uguale" il contenuto delle celle della colonna G a quelle della colonna E.
Spero di essere stato chiaro.
Alfredo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim ur As Long
ur = Sheets("Foglio1").Range("e" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("a5:a" & ur)) Is Nothing Then
For i = 5 To ur
Range("g" & i).Value = Range("e" & i).Value
Next i
End If
End Sub
|
di DELTAmax data: 22/10/2015 23:26:35
Sulla spiegazione sei stato chiarissimo....l'ho capito perfino io xD
Però il problema è che non riesco a farla partire...
Nel senso attivare la macro nel foglio... ho provato anche a scrivere qualcosa nella colonna A ma non succede nulla se non modificarsi il risultato nella cella E adiacente....
Mi spiegheresti gentilmente come fare a farla partire??....
Se la copio nella VBA e provo a farla partire da li mi da sempre errore...
Io ho scritto questo e mi da errore 91 sulla riga If Not ecc ecc
Sub Foglio1
rem Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim ur As Long
ur = Sheets("Foglio1").Range("e" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("a5:a" & ur)) Is Nothing Then
For i = 5 To ur
Range("g" & i).Value = Range("e" & i).Value
Next i
End If
End Sub
|
di alfrimpa data: 24/10/2015 16:23:17
Ciao Max e perdona il ritardo della risposta ma ieri non ho proprio acceso il computer.
La risposta alla tua domanda prevede un discorso articolato.
Innanzitutto ti chiedo: hai provato il mio file? La macro era lì inserita e come ti ho detto funziona quando si vanno a modificare le celle da A5 ad A ed il numero dell'ultima riga piena della colonna E (cioè A22).
Perché hai modificato la mia macro? E' ovvio che non sapendolo fare non può e non potrà mai funzionare.
Tu hai scritto:
Sub Foglio1
rem Private Sub Worksheet_Change(ByVal Target As Range)
che sono istruzioni che non stanno né in cielo né in terra.
Detto questo cerchiamo di fare un po' di teoria.
Le macro si possono lanciare in vari modi; quello che a noi interessa in questo caso è eseguire la macro al verificarsi di un determinato evento su un oggetto di Excel.
Nello specifico il codice viene eseguito quando si verifica una variazione "fisica" del foglio di lavoro.
Questi tipi di macro hanno dei nomi predeterminati (e non possono chiamarsi come vogliamo) e tali nomi sono costituiti a sinistra dal nome dell'oggetto ed a destra dal nome dell'evento.
Quindi se si scrive Worksheet_Change la macro partirà nel momento in cui si verifica una variazione del foglio di lavoro (o in una sua parte).
Per inserire tali macro devi:
1) Aprire l'editor di VBA
2) In alto a sinistra (nella finestra di progetto) fai doppio clic sul nome del foglio che ti interessa
3) Nella finestra a destra vedrai due tendine; in quella a sinistra scegli Worksheet ed in quella a destra Change. Ti appariranno le seguenti diciture:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
4) All'interno di queste due diciture va copiato il codice che va eseguito al verificarsi di una modifica del foglio.
Spero di essere stato chiaro.
Alfredo
di DELTAmax data: 24/10/2015 23:24:02
ho visto solo ora il msg....
Grazie mille... Ora ho capito perfettamente... xD ....avevo provato a googlare quella riga, ma non capivo come andava scritta...
Perchè tutti i tuoi file quando li apro e vado a modificare la macro, trovo tutti i parametri preceduti da REM oltre ad una riga supplementare all'inizio SubFoglio1....e pensavo fosse un comando obbligatorio ed invece l'altro era solo una frase di controllo...scusami....
Sarà il fatto che io uso OpenOffice perchè ho excel starter e non prevede macro...forse OO modifica le macro con un rem davanti, boh non so...
Comunque ora funziona aggiornando in automatico il foglio, alla digitazione di un numero in una cella della colonna A fino ad A (parallela all'ultima cella in E con la funzione).... Fin qui tutto perfetto come avevi detto tu....meraviglia :D
Ma piu vado avanti e piu ho voglia di chiederti nuovi optional xP
Tipo è possibile fare lo stesso anche sulla cella C questo aggiornamento?? in modo che non debba sempre scrivere nella cella C prima della A...L'ho scritto e sembra funzionare... E' giusto secondo te?...
Poi, è normale che quando aggiorna scorre tutto il foglio mettendoci 3 4 secondi??...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim ur As Long
ur = Sheets("Foglio1").Range("e" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("a5:a" & ur)) Is Nothing Then
For i = 5 To ur
Range("g" & i).Value = Range("e" & i).Value
Next i
End If
If Not Intersect(Target, Range("c5:c" & ur)) Is Nothing Then
For i = 5 To ur
Range("g" & i).Value = Range("e" & i).Value
Next i
End If
End Sub |
di alfrimpa data: 25/10/2015 20:11:47
Ciao Max
Ti ho allegato nuovo file (File_Deltamax1.xlsm) con la modifica da te richiesta (spero).
Quanto ad Open Office non lo conosco e non posso dirti nulla.
Per i tempi di esecuzione non saprei; a me è istantaneo per cui bisognerebbe vedere il tuo file reale.
Alfredo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim ur As Long
ur = Sheets("Foglio1").Range("e" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("a5:a" & ur, "c5:c" & ur)) Is Nothing Then
For i = 5 To ur
Range("g" & i).Value = Range("e" & i).Value
Next i
End If
End Sub
|
di DELTAmax data: 26/10/2015 00:39:15
Grazie alfredo...
Ho provato il tuo file per vedere se era piu veloce (rispetto al mio copia incolla sempre su OO) ma è sempre uguale...sempre 3/4 sec....
Proverò ad installare qualche excel senza limitazioni per vedere se è uguale o piu veloce....
Anche perchè il file che devo modificare con quella macro è un file che uso su excel percui devo "aggiornarmi"...
Ultima cosa che ti chiedo...
Su excel ho questo file con una colonna adibita a "SPESA" dove vengono inserite somme e divisioni di altre celle...
Ho fatto in modo che in base ai valori che escono si colori la cella in modo proporzionale al valore (formattazione condizionale) usando le barre dati....rosso per i numeri positivi e verde per i negativi...
Il problema è che non è esattamente quello che voglio...allego il file con la foto di come esce il tutto (sinistra) e come vorrei che fosse (destra)...
praticamente vorrei se possibile:
piu alto è il valore in positivo piu lunga è la barra rossa...
piu basso è il valore in negativo piu lunga è la barra verde... (ora esce il contrario)
con lo zero con barra inesistente
E' possibile tutto questo??...o è solo una mia fantasia??...
di alfrimpa data: 26/10/2015 11:22:48
Cia Max
Purtroppo della formattazione condizionale ne so poco o nulla e non sono in grado di aiutarti.
Ti consiglierei di aprire una nuova discussione magari allegando un file di esempio.
Alfredo
di DELTAmax data: 26/10/2015 13:40:15
okey alfredo...
Intanto GRAZIE MILLE per l'aiuto (e la pazienza) che mi hai dato....fossero tutti come te nei forum che ci sono in giro :D
Vuoi Approfondire?