Note: The other languages of the website are Google-translated. Back to English

Come duplicare le righe in base al valore della cella in una colonna?

Ad esempio, ho un intervallo di dati che contiene un elenco di numeri nella colonna D e ora voglio duplicare le intere righe un numero di volte in base ai valori numerici nella colonna D per ottenere il seguente risultato. Come posso copiare le righe più volte in base ai valori delle celle in Excel?

doc duplica le righe per cella 1

Duplica le righe più volte in base ai valori delle celle con codice VBA


freccia blu freccia destra Duplica le righe più volte in base ai valori delle celle con codice VBA

Per copiare e duplicare l'intera riga più volte in base ai valori della cella, il seguente codice VBA può aiutarti, per favore fai come segue:

1. Tieni premuto il ALT + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.

2. Clic inserire > Moduloe incolla il codice seguente nel file Modulo Finestra.

Codice VBA: duplica le righe più volte in base al valore della cella:

Sub CopyData()
'Updateby Extendoffice
    Dim xRow As Long
    Dim VInSertNum As Variant
    xRow = 1
    Application.ScreenUpdating = False
    Do While (Cells(xRow, "A") <> "")
        VInSertNum = Cells(xRow, "D")
        If ((VInSertNum > 1) And IsNumeric(VInSertNum)) Then
           Range(Cells(xRow, "A"), Cells(xRow, "D")).Copy
           Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "D")).Select
           Selection.Insert Shift:=xlDown
           xRow = xRow + VInSertNum - 1
        End If
        xRow = xRow + 1
    Loop
    Application.ScreenUpdating = False
End Sub

3. Quindi premere F5 chiave per eseguire questo codice, le intere righe sono state duplicate più volte in base al valore della cella nella colonna D di cui hai bisogno.

Note:: Nel codice sopra, la lettera A indica la colonna iniziale dell'intervallo di dati e la lettera D è la lettera della colonna su cui desideri duplicare le righe in base. Si prega di modificarli secondo le proprie necessità.


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (41)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Questo ha funzionato perfettamente. Cosa aggiungerei al tuo codice per far scomparire le righe con '0'? Lo stiamo usando per le etichette SKU. Grazie per l'ottima soluzione!
Questo commento è stato fatto dal moderatore sul sito
Ti amo. Grazie.
Questo commento è stato fatto dal moderatore sul sito
Grazie! le righe 10 e 11 "D" indicano la fine della riga e potrebbe essere necessario modificarla nell'intervallo di dati per farlo funzionare.
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Qualcuno sa convertire a caldo questo codice VBA in script di Google Apps (fogli Google)?
Questo commento è stato fatto dal moderatore sul sito
Ho usato il codice sopra che funziona alla grande ma ho bisogno di un altro passaggio dopo che la riga è stata incollata. Non riesco proprio a farlo funzionare correttamente. Ho bisogno che metta zero nella colonna "N" nella riga dopo che è stato incollato, ma mantenga il valore in "N" nella riga originale copiata.


Sub copyData ()
'Aggiorna entro Extendoffice 20160922
Dim xRiga quanto a lungo
Dim VInSertNum come variante
xRiga = 1
Application.ScreenUpdating = False
Fai mentre (Cells(xRow, "A") <> "")
VInSertNum = Celle(xRiga, "J")
Se ((VInSertNum > 1) e IsNumeric(VInSertNum)) Allora
Intervallo(Cells(xRiga, "A"), Celle(xRiga, "AN")).Copia
' Cells(xRow, 14).Value = 0 questo ha fatto tutte le righe
Intervallo(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "AN")).Seleziona
'Cells(xRow, 14).Valore = 0
'questo ha fatto tutte le righe
Selection.Insert Shift: = xlDown
' Cells(xRow, 14).Value = 0 questo ha fatto solo la prima riga
xRiga = xRiga + VInSertNum - 1
'Cells(xRiga - 1, 14).Valore = 0
End If
' Celle(xRiga - 1, 14).Valore = 0
xRiga = xRiga + 1
' Celle(xRiga + 1, 14).Valore = 0
Ciclo continuo
'Cells(xRow, 14).Value = 0 questo non ha fatto righe
Application.ScreenUpdating = False
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ciao Steve, sei stato in grado di farlo. il mio requisito è più o meno lo stesso :(
Questo commento è stato fatto dal moderatore sul sito
Ciao ragazzi,
Forse l'articolo qui sotto può aiutarti, per favore controllalo:
https://www.extendoffice.com/documents/excel/3682-excel-copy-and-insert-row-multiple-times.html
Questo commento è stato fatto dal moderatore sul sito
Sai quale sarebbe il codice per duplicare la riga solo una volta, in base a se la cella d contiene "Sì" - Ho inseguito un codice simile ma per qualcosa che duplicherà una riga in base a una cella che dice di sì
Questo commento è stato fatto dal moderatore sul sito
Quindi sto usando questo codice ma voglio che cerchi l'intero documento non solo la riga 1 o qualunque cosa sia indicata da xRow = 1. Sto cercando di inserire l'intervallo 1:2000 ma non funziona. Come posso identificare xRow = qualsiasi riga del foglio che includa le informazioni che identifico nel codice seguente?


Dim xRiga quanto a lungo
Valore debole come variante


xRiga = 1: 2000

Application.ScreenUpdating = False
Fai mentre (Cells(xRow, "A") <> "")
Valore = Celle(xRiga, "D")
Valore2 = Celle(xRiga, "A")
Se No ((Valore = "allegheny generale") E IsNumeric(Valore2 = G0202)) Allora
Intervallo(Cells(xRiga, "A"), Celle(xRiga, "D")).Copia
Intervallo(Cells(xRiga + 1, "A"), Celle(xRiga + 1, "D")).Seleziona
Selection.Insert Shift: = xlDown
xRiga = xRiga + 1
End If
xRiga = xRiga + 1
Ciclo continuo
Application.ScreenUpdating = False
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ciao, ha funzionato alla grande. Tuttavia, ho un rapporto con 1000 voci e il codice ha smesso di duplicarsi intorno alla voce 480. C'è qualcosa che posso aggiungere in modo che completi l'azione sull'intero rapporto?
Questo commento è stato fatto dal moderatore sul sito
Ciao, Lia,
Ho testato il codice in 2000 righe e funziona bene.
Potresti inviarmi il tuo foglio di lavoro per testare il codice?
Il mio indirizzo email è skyyang@extendoffice.com
Rimango in attesa di una sua risposta!
Questo commento è stato fatto dal moderatore sul sito
Ciao! L'ho fatto funzionare. È stato un errore da parte mia, il rapporto aveva alcune righe vuote nascoste che stavano causando l'interruzione del ciclo dello script. Ha funzionato per il mio rapporto con 8,000 righe! GrazieQ
Questo commento è stato fatto dal moderatore sul sito
Ciao Leah e Skyyang,
Sto riscontrando un problema simile: lo script funziona bene in un foglio di lavoro di circa 100 righe ma smette di funzionare per qualcosa di più grande. Ho controllato le righe vuote nella colonna da cui proviene il numero di moltiplicazione e non ce ne sono. Qualche altro motivo per cui lo script potrebbe non funzionare per set di dati più grandi?
Questo commento è stato fatto dal moderatore sul sito
Grazie! è stata un'ottima soluzione per tutti i miei problemi!
Questo commento è stato fatto dal moderatore sul sito
Questo script sembra essere esattamente ciò di cui ho bisogno, tuttavia, quando lo eseguo viene visualizzato un errore sulla riga Selection.Insert Shift:=x1Down

Qualche suggerimento su come risolvere questo problema?
Questo commento è stato fatto dal moderatore sul sito
ciao, per me non funziona, voglio rimuovere lettere e numeri duplicati è possibile?
Questo commento è stato fatto dal moderatore sul sito
C'è un modo per aggiornare il modulo per duplicare solo i nuovi dati? Sto lavorando su un documento in corso e non voglio che il codice duplichi i dati che sono stati duplicati in precedenza.
Questo commento è stato fatto dal moderatore sul sito
c'è un modo per aggiungere a ciascuna cella ripetuta, caratteri consecutivi? esempio
KTE+0001

KTE+0002
Questo commento è stato fatto dal moderatore sul sito
Amabile! Grazie. Mi chiedo se qualcuno potrebbe dare un suggerimento su come incorporare una nuova colonna di informazioni nella tabella (colonna E) che è un numero di valore incrementale per ogni riga copiata, 1, 2, 3, 4 ecc... e poi quando arriva all'elemento successivo da duplicare X volte, ricomincerà a numerare da 1 e ad aumentare di 1 ogni volta.
Questo commento è stato fatto dal moderatore sul sito
Ciao, ho provato questo ma c'è un modo per considerare se ci sono più criteri con i dati che sto duplicando
Questo commento è stato fatto dal moderatore sul sito
Ciao,

sto creando un foglio di calcolo utilizzando la formula fornita ma sto riscontrando errori. per favore qualcuno può dirmi quale dovrebbe essere la mia formula?

la mia tabella è di AY con le quantità in K.
Questo commento è stato fatto dal moderatore sul sito
ciao, ho provato a modificare questo codice ma ho delle difficoltà.
ho articoli di inventario. ogni elemento è di due righe e vuoi che siano duplicati N numero di volte
nella parte superiore del foglio di calcolo, ho una cella, chiamiamola A1, quante volte viene duplicata? N
qualunque sia il valore N, voglio duplicare l'articolo di inventario iniziale che ho (A16, A17) tante volte.
quindi l'elemento copiato dovrebbe iniziare in A18 (e sono due righe, l'elemento successivo a20 ecc.
Grazie
Questo commento è stato fatto dal moderatore sul sito
Ciao, il codice funziona benissimo. Volevo anche aggiungere +1 alla data (solo nei giorni feriali) ogni volta che la riga viene duplicata.
Questo commento è stato fatto dal moderatore sul sito
Grazie mille! Questo mi ha fatto risparmiare così tanto tempo che perdevo tempo a copiare e incollare tutte le mie righe di dati.
Due pollici in su!!
Questo commento è stato fatto dal moderatore sul sito
Ottimo pezzo di codice!!! Grazie!!!
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL