copia incolla condizionato

Bizzo

New Member
Joined
Mar 23, 2022
Messages
12
Office Version
  1. 2016
Platform
  1. Windows
Buongiorno amici, non capisco molto di VBA ma ho una macro che fa esattamente quello che vorrei.
Nel Foglio1 compila la scheda. Fare clic sul pulsante "AGGIORNA" e la macro esegue le seguenti operazioni, nel Foglio2:
- copia l'ultima riga non vuota (Bn:Jn n= numero);
- incolla la formula nella riga sottostante (ultima non vuota +1);
-incolla i valori nella riga precedente (quella che prima era l'ultima riga non vuota

Come si vede, nel Foglio2, io ho bisogno di incollare la formula non nella "ultima non vuota +1" ma dove ho inserito la data (colonna A:A) saltando le celle vuote ("").
Grazie molto a chi mi aiuta.

[CODICE=vba][/CODICE]

Sub Macro1()
'
' Macro1 Macro
'
Dim uR As Long
uR = Sheets("Foglio2").Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Foglio2").Range(Sheets("Foglio2").Cells(uR, 2), Sheets("Foglio2").Cells(uR, 10)).Copy Sheets("Foglio2").Cells(uR + 1, 2)
Sheets("Foglio2").Range(Cells(2, 2), Sheets("Foglio2").Cells(uR, 10)).Copy
Sheets("Foglio2").Cells(2, 2).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Application.ScreenUpdating = False
Cells(1, 1).Select
End Sub
 

Attachments

  • prova_001.jpg
    prova_001.jpg
    139.8 KB · Views: 32
Sei gentilissimo e non saprei come ringraziarti per il tempo che mi stai dedicando.
Il tuo codice ha copiato ed incollato i valori delle righe fino, all'ultima cella non vuota della colonna A, dove c'era una formula. Tutte le formule sono spartite. SIG! (con lacrima)
Quello che vorrei è evitare ogni qualvolta che inserisco valori nella scheda del foglio 1, io debba fare copia e incolla valori ( a "mano") in vari fogli dove si attivano i valori dalle formule.

Cerco di spiegarmi meglio (se ci riesco?)
Quando in una delle celle nella colonna A, foglio 2, appare la data, significa che tutte le formule della corrispondente riga (sono delle condizioni =se( ...), si attivano e forniscono dei VALORI che discendono dalla SCHEDA del foglio 1. Se io non incollo questi VALORI , appena modifico la SCHEDA del foglio 1, si modificano e io perdo i valori. Ma io voglio conservarli!.
Quindi, in questa riga , dove si inserisce la data, bisogna incollare i VALORI (eliminare le FORMULE). Tutte le celle che seguono, nelle righe sucessive, sono con formule.

Quindi cosa deve fare la macro?
A) se tutte le celle del foglio hanno formule (dalla A1 alla J300) (PRIMA POSSIBILE SOLUZIONE)
1) deve individuare l'Ultima riga con valori (numeri e formule). In questa riga, nella colonna A, si è inserita una data.
2) fare copia riga,
3) incolla solo Valori.
4) fine

B)se non si possono avere tutte le celle occupate da formule (A1:J300), (SECONDA POSSIBILE SOLUZIONE)
1.1) ho l'ultima riga non vuota, che ha già numeri (forniti dalle formule)
1.2) copia e incolla le FORMULE nelle righe sottostanti (per conservarle),
1.3) incolla VALORI nella riga che ha i valori (Vedi 1.1)).
La prossima volta, quando in una cella della colonna A si inserisce la data ( ci possono essere righe vuote che la precedono) ho bisogno che la macro :
2.1) mi copia la formula che sta nell'ultima riga non vuota vedi 1.2) ( ha solo le formule)
2.2) incolla nella riga dove nella colonna A si è inserita la data (e a questo punto le formule forniscono i numeri)
2.3) riprende da 1.1) fino a 1.2).

Da scegliere il metodo A) o il metodo B)

....cose da pazzi....?
 
Upvote 0

Excel Facts

Using Function Arguments with nested formulas
If writing INDEX in Func. Arguments, type MATCH(. Use the mouse to click inside MATCH in the formula bar. Dialog switches to MATCH.
Tutte le formule sono spartite. SIG! (con lacrima)
Ma e' quello che faceva il tuo codice, e se tu dici che la macro "fa esattamente quello che vorrei" io parto da quella e modifico in funzione del problema che poni...
Domani guardero' meglio l'ultimo messaggio, sperando ci sia una descrizione su cui lavorare
Ciao
 
Upvote 0
Ma e' quello che faceva il tuo codice, e se tu dici che la macro "fa esattamente quello che vorrei" io parto da quella e modifico in funzione del problema che poni...
Domani guardero' meglio l'ultimo messaggio, sperando ci sia una descrizione su cui lavorare
Ciao
Non voglio impazientirti, ma in finale ho scritto:
Come si vede, nel Foglio2, io ho bisogno di incollare la formula non nella "ultima non vuota +1" ma dove ho inserito la data (colonna A:A) saltando le celle vuote ("").
Grazie molto a chi mi aiuta.
Nell'ultimo messaggio ho detto la stessa cosa immaginando due soluzioni alternativa che io non so tradurre in codice VBA
Grazie per la tua pazienza
 
Upvote 0
A spanne, visto che in colonna A devi avere le formule che ti fanno comparire la data, mi pare che mantenere l'impostazione del foglio precompilato con le formule sia l'opzione migliore tra le due presentate.
Quindi lavoriamo per
-identificare l'ultima data presente in colonna A
-consolidare il contenuto di quella riga come valori, senza toccare le righe sottostanti

Mi pare inoltre che i dati siano in colonne A:J

Se va bene cosi' allora la macro che lo realizza potrebbe essere:
VBA Code:
Sub BIzzo5()
'
Dim uR1 As Long
uR1 = Evaluate("=MAX(if(Foglio2!A1:A10000<>"""",ROW(A1:A10000),""""))")
Sheets("Foglio2").Cells(uR1, "A").Resize(1, 10).Copy
Sheets("Foglio2").Cells(uR1, "A").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

Prova ancora (ovviamente dopo aver fatto due copie di backup del tuo file originale)
Rimane il fatto che la macro al momento va lanciata; se spiegli quali situazioni esterne determinano le condizioni di lancio della macro magari riusciamo ad eseguirla automaticamente.

Ciao
 
Upvote 0
Solution
Perfetto! funziona
Ti spego le situazioni esterne che determinano i se , solo per rispndere alla tua domanda, però non vale la pena inserirle in una macro.
La macro che mi hai gentilmente risolto, la devo inserire in una macro più complessa
Supponi che di tanto in tanto (2 -3 volte l'anno) io faccia dei rilievi in natura con strumentazione. Ma questi dati mi servono almeno mensilmente. Quando faccio i rileievi ho una DATA e dei dati EFFETTIVI, le altre volte ho una DATA e dei dati CALCOLATI, che ottengo per interpolazione non lineare (mediata, staistica e/o probabilistica). Quando la volta successiva faccio nuovamente i rilievi, ho sicuramemte degli scostamenti rispetto ai CALCOLATI e di conseguenza ho, dei CONGUAGLI che non sono altro che gli scostamenti che ripartisco in funzione dei giorni intercorsi tra una data e l'altra. Quindi le condizioni SE, sono riferite alle date ed alla tipologia di dati (Effettivi, calcolati o conguagli) e mi fornisce dei valori che derivano da essi. Di queste misurazioni ne ho diverse tipologie (ecco perchè in quel determinato foglio ho delle celle vuote) che vengono raccolte in fogli dedicati e poi, in sequenza, tutte in un foglio madre. In questo modo, posso fare un confronto tra le varie tipologie e vedere cosa succede al variare di una rispetto alle altre, qualora si notano delle relazioni. (es. banale: se non piove, la vegetazione si appassisce e poi muore ma anche il terreno subisce una desertificazione ecc.).
Grazie infinite. Adeso mi metto al lavoro per inserire la tua macro nei vari fogli. Spero di non avere problemi.
 
Last edited:
Upvote 0
Capisco...
Attenzione, la macro guarda solo l'ultima riga che contiene una data; c'e' la possibilita' che ci siano invece piu' righe da dover consolidare in valori? Se Sì allora ti faccio una piccola modifica, che converrebbe testare prima di integrare nel tuo lavoro
 
Upvote 0
Mi riservo di farti sapere se ho necessità di agggiustamenti che non riesco a fare io. Vado ad inserire la tua macro.
Buon pomeriggio
 
Upvote 0
I primi fogli Stanno funzionando!:giggle: :coffee:
 
Last edited:
Upvote 0

Forum statistics

Threads
1,223,910
Messages
6,175,318
Members
452,634
Latest member
cpostell

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top