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

Excel Facts

How to find 2nd largest value in a column?
MAX finds the largest value. =LARGE(A:A,2) will find the second largest. =SMALL(A:A,3) will find the third smallest
Intanto Benvenuto nel forum
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 ("").
Dovrebbe quindi bastare calcolare un secondo uR1 non su colonna B (come fai su uR), ma su colonna A; cioe':
VBA Code:
uR1 = Sheets("Foglio2").Cells(Rows.Count, 2).End(xlUp).Row

Poi usi questo uR1 come Destination:
VBA Code:
Sheets("Foglio2").Cells(uR, 10)).Copy Sheets("Foglio2").Cells(uR1, 2)

Fai sapere...
 
Last edited:
Upvote 0
Fogli("Foglio2").Cells(uR, 10)).Copia Fogli("Foglio2").Cells(uR1, 2)
Grazie per il tuo suggerimento, ho provato ad inserire il due righe di istruzioni: non cambia nulla. Come ho premesso non sono molto addentro al linguagguo VBA, ti chiedo gentiòlmente se tu potessi riscrivere tutto il codice cosi evuto di sbagiare. Magari ho capito maschio. Un'altra cosa, quando dici : quindi dovrebbe bastare calcolare un secondo uR1 non su colonna B (come fai su uR), ma su colonna A, sembra che tu voglia cercare nella colonna A l'ultima riga non vuota. Devo aggiungere che nelle celle vuote ci sono formule, anche nella colonna A.
Grazie. Non mi crederai, ma sono due settimane che vado dietro a questa sluzione (circa tre ore al giorno) e sono arrivato a questo. Ora non così più andare avanti.
 
Upvote 0
E' una formula condizionale =Se(.....;......;.....) che va a cercare la data in altri fogli
ho provato ad inserire l'esempio con XL2BB ma in anteprima lo vedo tuto frazionato e non composto. te lo invio , magari è un mio problema
 
Upvote 0
prova.xlsm
ABCDEFGHIJKLMN
112345678
205/03/202102/03/20215106832525612
3
4
5
6
7
8
9
1005/04/202102/03/202121253036121520copia e incolla valori B1:J10
11
12
13
14
1506/07/2021incolla formula (B10:J10)
16
17
18
19
20
21
22
23
24
25
26
27
Foglio2
Cell Formulas
RangeFormula
B10:J10B10=IF(A10<>"",INDEX(Foglio1!A:A,AGGREGATE(14,6,ROW(Foglio1!A:A)/(Foglio1!$A:$A<>""),1)),"")
 
Upvote 0
in questo foglio la colonna A è vuota per motivi di praticità. ma considera che ci sono formule
 
Upvote 0
prova.xlsm
ABCDEFGHI
1
2
3
4AAABBB
5
6xxxyyy236
7zzzaaa1212
8yyybbb515
9wwwzzz3020
10
11
12Data
1302/03/202121253036121520
Foglio1
Cell Formulas
RangeFormula
B13B13=B6
C13C13=B7
D13D13=B8
E13E13=B9
F13F13=D6
G13G13=D7
H13H13=D8
I13I13=D9
 
Upvote 0
Non sapendo che cosa vorresti fare, e facendo affidamento sul codice che non fa quella cosa :p, la migliore cosa che ho immaginato e' questa:
VBA Code:
Sub Bizzo4()
'
Dim uR As Long
uR = Sheets("Foglio2").Cells(Rows.Count, 2).End(xlUp).Row
uR1 = Evaluate("=MAX(if(Foglio2!A1:A10000<>"""",ROW(A1:A10000),""""))")
Sheets("Foglio2").Cells(uR, 2).Resize(1, 9).Copy Sheets("Foglio2").Cells(uR1, 2)
Sheets("Foglio2").Range(Cells(2, 2), Sheets("Foglio2").Cells(uR1, 10)).Copy
Sheets("Foglio2").Cells(2, 2).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Cells(1, 1).Select
End Sub

Fai sapere...
 
Upvote 0
copiato ed incollato i valori delle righe fino, all'ultima cella della colonna A dove c'era una formula. Tutte le formule sono spartite.
Pensavo di essermi speigato. Quando nel foglio 2 colonna appare la data, significa che tutte le formule della riga (condizione =se( ...) si attivano e forniscono dei valori che dipendono dalla sceda del foglio 1. Se io non incollo questi VALORI , appena modifico la scheda del foglio 1 anche loro si modificano ma io devo conservarli. quindi bisogna incollare i valori. Tutte le celle che seguono nelle righe sucessive sono con formule. Quindi cosa deve fare la macro?
- deve individuare l'iltima riga con valori (numeri e formule) fare copia, deve incollare solo Valori. In questo modo le formule sono gia nelle righe sucessive.
- Oppure se non si può , non metto le formule nelle rghe sucessive all'ultima che ha valori ( numeri e formule) mi porto la formula nelle righe sottostanti (per conservarla) incollo i VALORI nella riga
 
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