Copia cella in altra vuota



  • 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