Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Zeilen nach Zahl/Variable hinzufügen und Werte kopiere

VBA - Zeilen nach Zahl/Variable hinzufügen und Werte kopiere
24.10.2023 17:21:12
Annette
Hallo miteinander,

ich hoffe, es kann jemand helfen? Ich würde mich freuen. Liebe Grüße

In einer Datei sind Emailadressen und weitere Infos enthalten. Um sie in ein System zu importieren benötige ich sie separiert und als einzelne Zeilen:
https://www.herber.de/bbs/user/163693.xlsx

Beispiel siehe Beispieldatei oder hier:
Emailadresse1 Referenz1, Referenz2, Referenz3 ... Häufigkeit3
Emailadresse2 Referenz1, Referenz2 ... Häufigkeit2
Emailadresse3 Referenz1 ... Häufigkeit1

Ich suche ein Makro, dass folgendes macht:
Ist die Häufigkeit 3, füge 2 Zeilen hinzu und kopiere die Information aus der Zeile in die kopierten (neuen) Zeilen.
Ist die Häufigkeit 2, füge 1 Zeilen hinzu und kopiere die Information aus der Zeile in die kopierten (neuen) Zeilen.
Ist die Häufigkeit 1 - mache nix.
Anzahl Zeilen mal 400 oder 1000


Ziel also:

Emailadresse1 Referenz1, Referenz2, Referenz3 ... Häufigkeit3
Emailadresse1 Referenz1, Referenz2, Referenz3 ... Häufigkeit3
Emailadresse1 Referenz1, Referenz2, Referenz3 ... Häufigkeit3
Emailadresse2 Referenz1, Referenz2 ... Häufigkeit2
Emailadresse2 Referenz1, Referenz2 ... Häufigkeit2
Emailadresse3 Referenz1 ... Häufigkeit1

Später, dann vermutlich in einem anderen Schritt muss ich das noch daraus basteln, wenn das auch noch jemand weiß, dann gerne. :-)

Emailadresse1 Referenz1 ... Häufigkeit3
Emailadresse1 Referenz2 ... Häufigkeit3
Emailadresse1 Referenz3 ... Häufigkeit3
Emailadresse2 Referenz1 ... Häufigkeit2
Emailadresse2 Referenz2 ... Häufigkeit2
Emailadresse3 Referenz1 ... Häufigkeit1

Aktuell sieht es bei mir so aus (manche Zeilen die mir helfen, können sicher noch raus):

Sub Zeilen_hinzufuegen()


On Error GoTo FehlerBehandlung

'das Makro sucht in nach Trenungszeichen , und fügt entsprechend Zeilen hinzu

Dim wrkbook As Workbook
Dim wkssheet As Worksheet
Dim wksziel As Worksheet
Dim rngBereich As Range
Dim rngbereichZiel As Range
Dim rngZelleZiel As Range
Dim intSpalte As Integer

Dim intzaehler As Integer
Dim intzeilenzaehler As Integer
Dim intVork As Integer


'-------------------------PFAD Angeben----------------------------
Set wrkbook = Application.Workbooks.Open("C:\Users\Kurz\Desktop\Kurz\Adressverwaltung_Opt\Anfragen_KUP\Werbesperren\Übersicht Werbesperren_Test_Auslesen.xlsm")

'----------------------------------------------
Set wkssheet = wrkbook.Worksheets("Emailadressen")
wkssheet.Select
Set rngBereich = wkssheet.UsedRange



Set wksziel = wrkbook.Worksheets.Add
wksziel.Name = "Emailadressen_neu"

wkssheet.UsedRange.Copy

' wksziel.PasteSpecial Paste:=xlPasteValues

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False 'Zwischenspeicher löschen



With wksziel
.Cells.Select
.Cells.EntireColumn.AutoFit
.Range("A1").Select

End With



Set rngbereichZiel = wksziel.UsedRange
intzeilenzaehler = rngbereichZiel.Rows.Count 'Anzahl Zeilen
intSpalte = rngbereichZiel.Columns.Count
rngbereichZiel.Select
Debug.Print rngbereichZiel.Address

Debug.Print "xxx"


For Each rngZelleZiel In rngbereichZiel

Select Case rngZelleZiel
Case 3
intzaehler = rngZelleZiel.Row
Debug.Print intzaehler
' rngZelleZiel(intzaehler, 4).EntireRow.Insert
' rngZelleZiel(intzaehler, 4).EntireRow.Insert


Case 2
'rngZelleZiel(intzaehler, 4).EntireRow.Insert
'Rows("intzaehler:intzaehler+2").Insert
Debug.Print "Case 2"
'Typen unverträglich weil #NV?'
Case "#NV"
Debug.Print "#NV"
Case Else

End Select


Next
'




ExitTeil:
On Error Resume Next

Set wrkbook = Nothing
Set wkssheet = Nothing
Set wksziel = Nothing
Set rngBereich = Nothing
Set rngZelle = Nothing
Set rngZelleZiel = Nothing
Set rngbereichZiel = Nothing




Exit Sub

FehlerBehandlung:
MsgBox "FehlerNr.: " & Err.Number & vbTab & Err.Description, vbCritical, pc_Titel
Err.Clear
Resume ExitTeil





3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zeilen nach Zahl/Variable hinzufügen und Werte kopiere
24.10.2023 17:59:22
Beverly
Hi Anette,

ich beziehe mich mal nur auf deine Frage:

Ich suche ein Makro, dass folgendes macht:
Ist die Häufigkeit 3, füge 2 Zeilen hinzu und kopiere die Information aus der Zeile in die kopierten (neuen) Zeilen.
Ist die Häufigkeit 2, füge 1 Zeilen hinzu und kopiere die Information aus der Zeile in die kopierten (neuen) Zeilen.
Ist die Häufigkeit 1 - mache nix.


Sub Vervielfaeltigen()

Dim lngZeile As Long
Dim intAnzahl As Integer
For lngZeile = Range("A1").End(xlDown).Row To 2 Step -1
If Cells(lngZeile, 4) > 1 Then
intAnzahl = Cells(lngZeile, 4)
Range(Cells(lngZeile + 1, 1), Cells(lngZeile + intAnzahl - 1, 4)).Insert
Range(Cells(lngZeile, 1), Cells(lngZeile, 4)).Copy Range(Cells(lngZeile + 1, 1), Cells(lngZeile + Cells(lngZeile, 4).Value - 1, 4))
End If
lngZeile = lngZeile - intAnzahl
Next lngZeile
End Sub


Bis später
Karin

Link zur Homepage: https://excel-inn.de/
Anzeige
AW: VBA - Zeilen nach Zahl/Variable hinzufügen und Werte kopiere
24.10.2023 18:55:05
daniel
Hi
als Makors mit Arrays (sehr schnell) geht es so:
deinen Angaben zur folge brauchst du das Origin_Mark nicht, du kannst es aber genauso einfügen, wenn

Sub test()

Dim arr, Erg
Dim z As Long, zE As Long
Dim i As Long
Dim ERN

arr = Cells(1, 1).CurrentRegion.Value
ReDim Erg(1 To WorksheetFunction.Sum(WorksheetFunction.Index(arr, 0, 4)) + 1, 1 To 3)

Erg(1, 1) = arr(1, 1)
Erg(1, 2) = arr(1, 2)
Erg(1, 3) = arr(1, 4)

zE = 1
For z = 2 To UBound(arr)
ERN = Split(arr(z, 2), ",")
For i = 0 To UBound(ERN)
zE = zE + 1
Erg(zE, 1) = arr(z, 1)
Erg(zE, 3) = UBound(ERN) + 1
Erg(zE, 2) = ERN(i)
Next
Next

Cells(UBound(arr, 1) + 3, 1).Resize(UBound(Erg, 1), UBound(Erg, 2)) = Erg

End Sub


für Excel 365 wäre sogar eine Formellösung denkbar, bei meinem Kenntnisstand allerdings in mehreren Schritten, hier für deine Bespieldatei:
1. Formel in F2, Formel bis Datenende runterziehen:
=TEIL(WIEDERHOLEN("|"&TEXTVERKETTEN(";";WAHR;A2:C2);D2);2;9999)
2. Formel in G2, hier kein Ziehen da Autospill
=TEXTTEILEN(TEXTVERKETTEN("|";WAHR;F2:F5);";";"|")
3. Formel in J2, Formel bis Datenende runterziehen
=WENN(G2=G1;J1+1;1)
4. Formel in K2, bis datenende Runter ziehen:
=INDEX(TEXTTEILEN(H2;",");1;J2)
5. ganzen Spillbereich von G2 kopieren und als Wert einfügen
6. Formel Spalte K kopieren und in H einfügen.
Ich würde mich freuen, wenn das noch jemand optimieren würde, vielleicht ist das ja sogar mit einer einzigen Formel machbar.

Gruß Daniel
Anzeige
AW: VBA - Zeilen nach Zahl/Variable hinzufügen und Werte kopiere
26.10.2023 12:23:15
Annette
Wunderbar, das war spitze und die zusätzliche Spalte habe ich auch hinbekommen.
Ganz lieben Dank und viele Grüße
Annette

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige