copia contenuto di una serie di celle in altre celle di una tabella

Anonimo
2024-02-03T20:24:52+00:00

Ciao a tutti !!

Vorrei automatizzare, magari attraverso una macro, delle operazioni che attualmente eseguo manualmente.

Posto screenshot per semplificare la mia richiesta:

Nella sostanza io eseguo manualmente l'inserimento di alcuni valori in alcune celle che poi mi danno dei risultati numerici che finiscono automaticamente nelle celle C2, D3, E3, F3, G3, quindi poi manualmente copio il contenuto delle celle C2;G2 e lo incollo nella tabella sottostante iniziando dalla prima riga C6;G6 e continuo cosi inserendo altri dati manualmente che poi mi riporteranno altri valori nelle celle C2:G2 e poi copio il contenuto e lo incollo nella riga vuota successiva della tabella C7:G7; stessa procedura per tutti i successivi valori delle celle C2:G2 che copio nelle righe successive vuote della tabella.

Qualche suggerimento ?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

22 risposte

Ordina per: Più utili
  1. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2024-02-05T19:23:32+00:00

    ciao

    alcune considerazioni da uno che il vba lo conosce meno di poco

    ma veramente per non cliccare un pulsante si deve diventare matti?

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2024-02-04T09:07:43+00:00

    Una, tra le tante, possibile alternativa con ricerca dalla prima riga disponibile :

    Sub InserisciValori()

    Const RigaMin As Long = 5

    Const CelleDaCopiare As String = "C2:G2"

    Const PrimaColonnaTabella As String = "C"

    Dim Wb As Workbook

    Dim Ws As Worksheet

    Dim UltimaRiga As Long

    Dim NumeroColonne As Long

    Dim RngCelleDaCopiare As Range

    Dim RngFind As Range

    Dim RngDest As Range

    Set Wb = ThisWorkbook

    Set Ws = Wb.Worksheets("Foglio1")

    With Ws

      Set RngCelleDaCopiare = .Range(CelleDaCopiare) 
    
      NumeroColonne = RngCelleDaCopiare.Columns.Count 
    
      Set RngFind = .Range(PrimaColonnaTabella & 1).Resize(1, NumeroColonne).EntireColumn 
    
      UltimaRiga = Application.Max(RigaMin, RngFind.Find(What:="\*", \_ 
    
                                             After:=RngFind.Cells(1), \_ 
    
                                             LookAt:=xlPart, \_ 
    
                                             LookIn:=xlFormulas, \_ 
    
                                             SearchOrder:=xlByRows, \_ 
    
                                             SearchDirection:=xlPrevious, \_ 
    
                                             MatchCase:=False).Row) + 1 
    
      Set RngDest = .Range(PrimaColonnaTabella & UltimaRiga).Resize(1, NumeroColonne) 
    
      RngDest.Value = RngCelleDaCopiare.Value 
    

    End With

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-02-04T08:29:25+00:00

    Ciao,

    il modo ci sarebbe sfruttando l'evento change del foglio di lavoro in cui i dati di origine vengono inseriti/modificati.

    Però bisognerebbe conoscere quali sono le celle che vai a modificare e, soprattutto, a quali condizioni far partire la procedura automatica.

    Altrimenti potresti avere inserimenti indesiderati dei dati da C2:G2 alla tabella sottostante.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2024-02-03T23:43:16+00:00

    Ciao Gianfranco !!

    Sembra funzionare col tuo suggerimento.

    Ci sarebbe la possibilità di automatizzarlo senza dover ogni volta essere costretto a cliccare sul pulsante ?

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2024-02-03T22:45:35+00:00

    Ciao

    un copia su prima riga liberà è sicuramente meglio

    ma a me piace

    Sub CmdInserisci_Click() 
    
    Dim blnAggiungi As Boolean 
    
    Dim h As Integer 
    
    blnAggiungi = False 
    
    h = 6 
    
    Do Until blnAggiungi = True 
    
    If Range("C" & h) = "" Then 
    
        blnAggiungi = True 
    
      End If 
    
      h = h + 1 
    
    Loop 
    
    Range("C" & h - 1) = Range("C2") 
    
    Range("D" & h - 1) = Range("D2") 
    
    Range("E" & h - 1) = Range("E2") 
    
    Range("F" & h - 1) = Range("F2") 
    
    Range("G" & h - 1) = Range("G2") 
    
    End Sub 
    

    la colleghi ad un pulsante

    La risposta è stata utile?

    0 commenti Nessun commento