Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ganze Zeilen in Sheet vervielfältigen

Frage Entwicklung VB for Applications

Mitglied: ShitzOvran

ShitzOvran (Level 1) - Jetzt verbinden

07.07.2011, aktualisiert 16:46 Uhr, 3046 Aufrufe, 2 Kommentare

ich möchte mittels VBA in Excel Zellen vervielfältigen. Wie oft, wird anhand einer Zelle festgelegt.

Hallo Spezialisten da draußen,

wie man vllt erahnen kann, habe ich ein Problem...
ich habe eine Tabelle indem mehrere Zeilen vorkommen. in der Tabelle sind auch Mengen angegeben (siehe Beispiel)
ad13ae53baa19124c737bb514044aa24 - Klicke auf das Bild, um es zu vergrößern

Jetzt ist es so, dass die Zeilen, die indem die Menge mehr als '1' ist, so oft kopiert werden soll, dass ich im So viele Zeilen habe, dass überall Menge '1' steht.

also im Endeffekt soll es so aussehen:
cc21ddb264f21aa7efb8525683de7c72 - Klicke auf das Bild, um es zu vergrößern

Die Tabelle ist natürlich stark vereinfacht. In den meisten Fällen ist es so, dass ich hunderte Datenasätze mit unzähligen Spalten habe. Ich müsste also irgendwie dynamisch sagen können, in welcher Spalte die Mengen stehen, auf die sich das Skript beziehen soll... (zB: die Spalte der aktiven Zelle, oder so) eine weitere Schwierigkeit ist zudem noch, dass er nach kopieren dann die werte auf 1 ändern soll.. oder evtl, mehrmalig durchgehen soll, und nach jedem kopieren und einfügen den wert herunterzählt und in der neu eingefügten Zelle den Wert '1' einträgt. Natürlich können auch Spaltenüberschriften vorhanden sein... alles sehr kopliziert.

ich habe zwar ein Skript mitdem ich einfach jede Zelle verdoppeln kann, aber das ist in diesem fall wohl eher unbrauchbar,.. aber trotzdem möchte ich euch es nicht vorenthalten:

01.
Sub zeilen_verdoppeln() 
02.
Dim lastrow As Long, i As Long 
03.
Dim wks1 As Worksheet 
04.
 
05.
Set wks1 = ActiveSheet 
06.
lastrow = wks1.Cells(Rows.Count, 1).End(xlUp).Row  'durchgehend genutzte Spalte nutzen 
07.
 
08.
For i = lastrow To 1 Step -1 
09.
    wks1.Rows(i + 1).Insert 
10.
    wks1.Rows(i).Copy wks1.Rows(i + 1) 
11.
Next i 
12.
End Sub

ich hoffe ihr habt irgendeine idee, wie ich anfangen kann

Kurzfristig habe ich das mit einer Formel gelöst, diese ist auf dem zweiten Tabellenblatt.
01.
=INDEX(Tabelle1!A:A;999-SUMMENPRODUKT(N(ZEILE(Tabelle1!A1)<=TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(Tabelle1!D$1;;;ZEILE($1:$999)))))+1)
elegeanter wäre es aber natürlich über ein Skript

Mit freundlichen Grüßen
Shitz
Mitglied: bastla
07.07.2011 um 17:18 Uhr
Hallo ShitzOvran!

Du hattest es ja fast schon:
01.
Sub zeilen_verdoppeln() 
02.
Const Spalte = "B" 
03.
 
04.
Dim lastrow As Long, i As Long, Anzahl As Long 
05.
Dim wks1 As Worksheet 
06.
 
07.
Set wks1 = ActiveSheet 
08.
lastrow = wks1.Cells(Rows.Count, TheColumn).End(xlUp).Row  'durchgehend genutzte Spalte nutzen 
09.
 
10.
For i = lastrow To 1 Step -1 
11.
    Anzahl = Cells(i, Spalte).Value 
12.
    If Anzahl <> 1 Then 
13.
        Cells(i, Spalte).Value = 1 
14.
        For j = 1 To Anzahl - 1 
15.
            wks1.Rows(i + 1).Insert 
16.
            wks1.Rows(i).Copy wks1.Rows(i + 1) 
17.
        Next 
18.
    End If 
19.
Next i 
20.
End Sub
Für "Spalte" kannst Du natürlich auch eine Variable und/oder einen numerischen Wert verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: ShitzOvran
13.07.2011 um 16:19 Uhr
vielen dank,

hab den Code noch ein bisschen angepasst und nu läufts...

ich weiß, nicht schön, aber selten

01.
Sub zeilen_verdoppeln() 
02.
 
03.
Dim Spalte          As String 
04.
Dim lastrow         As Long 
05.
Dim i               As Long 
06.
Dim Anzahl          As Variant 
07.
Dim wks1            As Worksheet 
08.
Application.EnableEvents = False 
09.
 
10.
 
11.
On Error GoTo Fehler 
12.
Spalte = ActiveCell.Column 
13.
Set wks1 = ActiveSheet 
14.
lastrow = wks1.Cells(Rows.Count, 1).End(xlUp).Row 
15.
For i = lastrow To 1 Step -1 
16.
    Anzahl = Cells(i, ActiveCell.Column).Value 
17.
    If IsNumeric(Anzahl) And Anzahl > 1 Then 
18.
            Cells(i, ActiveCell.Column).Value = 1 
19.
        For j = 1 To Anzahl - 1 
20.
            wks1.Rows(i + 1).Insert 
21.
            wks1.Rows(i).Copy wks1.Rows(i + 1) 
22.
        Next 
23.
    End If 
24.
Fehler: 
25.
Next i 
26.
End Sub
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Backup
gelöst Datensicherung von Daten, auf denen die ganze Zeit gearbeitet wird (8)

Frage von Windows11 zum Thema Backup ...

Viren und Trojaner
AVAST Virenscanner müllt die ganze Festplatte zu (4)

Frage von swi170 zum Thema Viren und Trojaner ...

Windows Server
gelöst Login Kennwort für eine ganze Gruppe ändern (14)

Frage von Hendrik2586 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (12)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...