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

Jak powielić wiersze na podstawie wartości komórki w kolumnie?

Na przykład mam zakres danych, który zawiera listę liczb w kolumnie D, a teraz chcę zduplikować całe wiersze kilka razy na podstawie wartości liczbowych w kolumnie D, aby uzyskać następujący wynik. Jak mogę wielokrotnie kopiować wiersze na podstawie wartości komórek w programie Excel?

doc zduplikowane wiersze według komórki 1

Zduplikuj wiersze wiele razy na podstawie wartości komórek z kodem VBA


strzałka niebieski prawy bąbelek Zduplikuj wiersze wiele razy na podstawie wartości komórek z kodem VBA

Aby skopiować i powielić całe wiersze wiele razy na podstawie wartości komórek, może Ci pomóc poniższy kod VBA, wykonaj następujące czynności:

1. Przytrzymaj ALT + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

2, Kliknij wstawka > Modułi wklej następujący kod w Moduł Okno.

Kod VBA: Zduplikuj wiersze wiele razy na podstawie wartości komórki:

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. Następnie naciśnij F5 kluczem do uruchomienia tego kodu, całe wiersze zostały zduplikowane wiele razy na podstawie wartości komórki w kolumnie D, zgodnie z potrzebami.

Uwagi: W powyższym kodzie litera A wskazuje początkową kolumnę zakresu danych i literę D to litera kolumny, na podstawie której chcesz powielić wiersze. Zmień je według swoich potrzeb.


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (41)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
To zadziałało idealnie. Co dodałbym do twojego kodu, aby zniknęły wszystkie wiersze z „0”? Używamy tego do etykiet SKU. Dzięki za świetne rozwiązanie!
Ten komentarz został zminimalizowany przez moderatora na stronie
Kocham cię. Dziękuję Ci.
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję Ci! wiersze 10 i 11 „D” wskazują koniec wiersza i może być konieczna zmiana zakresu danych, aby działał.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Ktoś wie, jak gorąco przekonwertować ten kod VBA na skrypty Google Apps (arkusze Google)?
Ten komentarz został zminimalizowany przez moderatora na stronie
Użyłem powyższego kodu, który działa świetnie, ale potrzebuję jeszcze jednego kroku po wklejeniu wiersza. Po prostu nie mogę go zmusić do prawidłowego działania. Potrzebuję, aby umieścić zero w kolumnie „N” w wierszu po wklejeniu, ale zachować wartość w „N” w oryginalnym skopiowanym wierszu.


Sub CopyData()
„Aktualizuj do” Extendoffice 20160922
Dim xRow tak długo
Dim VInSertNum jako wariant
xwiersz = 1
Application.ScreenUpdating = Fałsz
Zrób podczas (Cells(xRow, "A") <> "")
VInSertNum = Komórki (xRow, "J")
Jeśli ((VInSertNum > 1) And IsNumeric(VInSertNum)) Wtedy
Zakres(Cells(xRow, "A"), Cells(xRow, "AN")).Kopiuj
' Cells(xRow, 14).Value = 0 to zrobiło wszystkie wiersze
Zakres(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "AN")).Wybierz
'Komórki(xRow, 14). Wartość = 0
„to zrobiło wszystkie rzędy”
Zaznaczenie.Wstaw przesunięcie:=xlDown
' Cells(xRow, 14).Value = 0 spowodowało to tylko pierwszy wiersz
xRow = xRow + VInSertNum - 1
'Komórki(xRow - 1, 14). Wartość = 0
End If
' Komórki(xRow - 1, 14). Wartość = 0
xwiersz = xwiersz + 1
' Komórki(xRow + 1, 14). Wartość = 0
Pętla
'Cells(xRow, 14).Value = 0 to nie ma wierszy
Application.ScreenUpdating = Fałsz
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Steve, czy byłeś w stanie to zrobić. moje wymagania są takie same :(
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć chłopaki,
Może poniższy artykuł może ci pomóc, sprawdź to:
https://www.extendoffice.com/documents/excel/3682-excel-copy-and-insert-row-multiple-times.html
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy wiesz, jaki byłby kod, aby zduplikować wiersz tylko raz, na podstawie tego, czy komórka d zawiera „Tak” - ścigałem podobny kod, ale dla czegoś, co zduplikuje wiersz na podstawie komórki mówiącej „tak”
Ten komentarz został zminimalizowany przez moderatora na stronie
Więc używam tego kodu, ale chcę, aby przeszukał cały dokument, a nie tylko wiersz 1 lub cokolwiek jest wskazane przez xRow = 1. Próbuję umieścić w zakresie 1:2000, ale to nie działa. Jak mogę zidentyfikować xRow = dowolny wiersz w arkuszu, który zawiera informacje określone w poniższym kodzie?


Dim xRow tak długo
Wartość dim jako wariant


xWiersz = 1: 2000

Application.ScreenUpdating = Fałsz
Zrób podczas (Cells(xRow, "A") <> "")
Wartość = komórki (xRow, "D")
Wartość2 = Komórki (xRow, "A")
Jeśli nie ((Wartość = "allegheny ogólne") And IsNumeric(Wartość2 = G0202)) Wtedy
Zakres(Cells(xRow, "A"), Cells(xRow, "D")).Kopiuj
Zakres(Cells(xRow + 1, "A"), Cells(xRow + 1, "D")).Wybierz
Zaznaczenie.Wstaw przesunięcie:=xlDown
xwiersz = xwiersz + 1
End If
xwiersz = xwiersz + 1
Pętla
Application.ScreenUpdating = Fałsz
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, to działało świetnie. Mam jednak raport z 1000 wpisów i kod przestał się powielać wokół wpisu 480. Czy jest coś, co mogę dodać, aby zakończył działanie na całym raporcie?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Lea,
Przetestowałem kod w 2000 wierszy i działa dobrze.
Czy możesz przesłać mi swój arkusz roboczy w celu przetestowania kodu?
Mój adres e-mail to skyyang@extendoffice.com
Oczekuję na Twoją odpowiedź!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam! Mam to do pracy. To był błąd po mojej stronie, raport zawierał kilka pustych wierszy, które były ukryte, co powodowało, że skrypt przestał się zapętlać. Zadziałało w moim raporcie z 8,000 wierszy! Dziękuję Q
Ten komentarz został zminimalizowany przez moderatora na stronie
Witajcie Leah i Skyyang,
Mam podobny problem - skrypt działa dobrze w arkuszu około 100 wierszy, ale przestaje działać dla czegoś większego. Sprawdziłem puste wiersze w kolumnie, z której pochodzi liczba mnożenia i nie ma ich. Jakieś inne powody, dla których skrypt może nie działać w przypadku większych zestawów danych?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki! to było świetne rozwiązanie na wszystkie moje kłopoty!
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten skrypt wydaje się być dokładnie tym, czego potrzebuję, jednak kiedy go uruchamiam, pojawia się błąd w wierszu Selection.Insert Shift:=x1Down

Jakieś sugestie, jak to naprawić?
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć u mnie nie działa, chcę usunąć litery a duplikat numeru jest możliwy?
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy istnieje sposób na zaktualizowanie modułu tak, aby powielał tylko nowe dane? Pracuję nad bieżącym dokumentem i nie chcę, aby kod duplikował dane, które zostały wcześniej zduplikowane.
Ten komentarz został zminimalizowany przez moderatora na stronie
czy jest jakiś sposób, aby do każdej powtarzającej się komórki dodać kolejne znaki? przykład
KTE+0001

KTE+0002
Ten komentarz został zminimalizowany przez moderatora na stronie
Śliczny! Dziękuję Ci. Zastanawiam się, czy ktoś mógłby podpowiedzieć, jak wstawić nową kolumnę informacji do tabeli (kolumna E), czyli numer przyrostu wartości dla każdego skopiowanego wiersza, 1, 2, 3, 4 itd... a potem kiedy dojdzie do następnej pozycji, która ma zostać zduplikowana X razy, zacznie ponownie numerować od 1 i za każdym razem będzie zwiększać się o 1.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, próbowałem tego, ale czy istnieje sposób na rozważenie, czy istnieje wiele kryteriów z duplikowanymi danymi?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Tworzę arkusz kalkulacyjny przy użyciu podanej formuły, ale mam błędy. czy ktoś może dać mi znać, jaka powinna być moja formuła?

moja tabela jest z AY z ilościami w K.
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć, próbowałem dostosować ten kod, ale mam trudności.
mam przedmioty z inwentarza. każdy element to dwa rzędy. I chcesz, aby były zduplikowane N razy?
na górze arkusza kalkulacyjnego mam komórkę, nazwijmy ją A1, mam ile razy jest duplikowana? N
bez względu na wartość N, chcę tyle razy zduplikować początkową pozycję zapasów (A16, A17).
więc skopiowany element powinien zaczynać się w A18 (i to dwa wiersze, następny element a20 itd.
Podziękowania
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, kod działa świetnie. Chciałem również dodać +1 do daty (tylko w dni powszednie) za każdym razem, gdy wiersz jest duplikowany.
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo! Zaoszczędziło mi to tyle czasu, że marnowałem kopiowanie i wklejanie wszystkich moich wierszy danych.
Dwa kciuki w górę!!
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetny kawałek kodu!!! Dziękuję Ci!!!
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL