Come creare un pulsante che invierà tutti i valori da una tabella a una riga in un'altra tabella


1

Non sono nemmeno sicuro che ciò sia possibile e Google non sta ottenendo nulla per me. Ho una tabella con i dati in C6: F12, G6: G8. Voglio inserire un pulsante che invierà tutti questi dati in una singola NUOVA riga di un'altra tabella. Questa tabella sarà posizionata più in basso nel foglio di lavoro. A seconda della dimensione dei grafici che inserisco, la prima serie di dati sarà di circa 50A: 50AD.

I dati di G7 e G8 verrebbero combinati e inseriti in 50A. Quindi C6: F6 andrebbe in 50B: 50E, C7: F7 andrebbe in 50F: 50I, C8: F8 andrebbe in 50J: 50m, C9: F9 andrebbe in 50N: 50Q, C10: F10 andrebbe in 50R: 50U , C11: F11 andrebbe in 50V: 50Y, C12: F12 andrebbe in 50Z: 50AC, e G6 andrebbe in 50AD.

Ogni volta che si preme il pulsante, viene creata una nuova riga, quindi la seconda serie di dati si trova nelle stesse colonne, ma nella riga 51, la terza nella riga 52, ecc.


Dov'è l'altro tavolo? Puoi specificare dove dovrebbe andare ogni valore di cella? Si desidera copiare da due intervalli diversi che dispongono ciascuno di più righe. Vuoi creare dati in una singola riga. Dov'è quella fila e dove va B2? Dove va B3? Dove va B4? ecc. È necessario creare un mapping logico tra origine e destinazione, quindi può essere inserito in VBA.
teylyn,

@teylyn - Ho aggiornato il mio post originale con informazioni più specifiche. Inoltre, alcune delle posizioni delle mie celle sono cambiate, ma ora sono nella loro posizione finale.
Dave,

Risposte:


5

Passo dopo passo:

  1. Nella cartella di lavoro, premi Alt- F11per aprire Visual Basic Editor (VBE)

  2. Fai clic su Inserisci> Modulo dal menu e incolla quanto segue nella finestra del codice grande

    Option Explicit
    
    Sub copyRow()
    Dim ws As Worksheet
    Dim lRow As Long
    
    ' define which worksheet to work on, i.e. replace Sheet1 with the name of your sheet
    Set ws = ActiveWorkbook.Sheets("Sheet1")
    
    ' determine the last row with content in column A and add one
    lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row + 1
    
    ' combine G7 and G8 and copy into column A, next empty row
    ws.Range("A" & lRow) = ws.[G7] & " " & ws.[G8]
    ' copy the other cells into their ranges
    ws.Range("C6:F6").Copy ws.Range("B" & lRow)
    ws.Range("C7:F7").Copy ws.Range("F" & lRow)
    ws.Range("C8:F8").Copy ws.Range("J" & lRow)
    ws.Range("C9:F9").Copy ws.Range("N" & lRow)
    ws.Range("C10:F10").Copy ws.Range("R" & lRow)
    ws.Range("C11:F11").Copy ws.Range("V" & lRow)
    ws.Range("C12:F12").Copy ws.Range("Z" & lRow)
    ws.Range("G6").Copy ws.Range("AD" & lRow)
    ws.[A1].Select
    End Sub
    
  3. Chiudi il VBE

  4. Nel foglio, inserisci un pulsante o una forma. Fai clic con il pulsante destro del mouse sulla forma e seleziona "Assegna macro". Seleziona la macro chiamata "copyRow"

  5. Nella colonna A, inserisci del testo in una cella per contrassegnare l'inizio della tabella dei dati. Quindi fare clic sul pulsante e i valori correnti della tabella e gli intervalli nelle righe da 6 a 12 verranno copiati nella successiva riga vuota.

Questo scenario si basa sul presupposto che ogni nuova riga di dati avrà un valore in G7 e G8, quindi ogni riga nella tabella seguente avrà un valore nella colonna A.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.