Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
384to388
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
384to388
384to388
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anpassung eines Makros

Anpassung eines Makros
23.02.2004 20:42:04
Stefan
Hallo,
ich hab folgendes Problem. In der Tabelle sieht man wie es vorher aussieht und wie das Ergebnis aussehen soll.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anpassung eines Makros
23.02.2004 21:41:05
Josef Ehrensberger
Hallo Stefan!
Dieses Makro könnte es tun!
Du musst die erste Zellen mit den Strings Markieren ( nur die 1. Spalte)!


Sub StringAufteilenA()
'Aufteilen von Strings mit Zeilenumbruch in einer Zelle
'auf einzelne Zellen(mit Nachbarzelle)
'Zellen (Spalte 1) markieren
Dim str1 As Variant, str2 As Variant
Dim varA() As Variant, varB() As Variant
Dim intC As Integer, intA As Integer, intB As Integer
Dim rng As Range
Dim lngRow As Long, intCol As Integer
   If Selection.Columns.Count > 1 Then Exit Sub
lngRow = Selection(1).Row
intCol = Selection.Column
   For Each rng In Selection
   str1 = Split(rng, Chr(10))
   str2 = Split(rng.Offset(, 1), Chr(10))
   intB = intB + UBound(str1) + 1
      For intC = 0 To UBound(str1)
      ReDim Preserve varA(intB)
      varA(intA) = str1(intC)
      ReDim Preserve varB(intB)
      varB(intA) = str2(intC)
      intA = intA + 1
      Next
   Next
   For intC = 0 To UBound(varA)
   Cells(intC + lngRow, intCol) = varA(intC)
   Cells(intC + lngRow, intCol + 1) = varB(intC)
   Next
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Gruß Sepp


Ein kluger Mann macht nicht alle Fehler selbst.
Er lässt auch anderen eine Chance.

(Sir Winston Churchill)


Anzeige
AW: Anpassung eines Makros
23.02.2004 22:49:25
Stefan
Hallo Josef,
erst mal vielen Dank für Deine Hilfe. Das Makro funktioniert schon ganz gut, nur sind unter den vorgegebenen Zeilen natürlich auch noch ausgefüllte Zeilen. Diese werden dann leider überschrieben :-((
Weißt Du vielleicht auch noch wie man das beheben kann??
Gruß Stefan
AW: Anpassung eines Makros - Fortsetzung
23.02.2004 22:52:46
Stefan
Hallo Josef,
erst mal vielen Dank für Deine Hilfe. Das Makro funktioniert schon ganz gut, nur sind unter den vorgegebenen Zeilen natürlich auch noch ausgefüllte Zeilen. Diese werden dann leider überschrieben :-(( Nebendran sind auch noch Daten(aber je Zelle nur eine Info) die leider auch noch runterkopiert werden müssen
Weißt Du vielleicht auch noch wie man das beheben kann??
Gruß Stefan
Anzeige
AW: Anpassung eines Makros - Fortsetzung
23.02.2004 23:09:52
Josef Ehrensberger
Hallo Stefan!
Also wenn Du die einzelnen Zeilen in einer Zelle auf einzelne
Zellen aufteilen willst, dann ist es doch logisch, das für jede
Zeile eine Zelle beansprucht wird! Oder verstehe ich etwas falsch?
Von weiteren Daten in benachbarten Zellen war bisher nicht die rede.
Wie sehen die se Daten aus?
Sind Daten in jeder benachbarten Zelle?
Wie sollen diese Zugeordnet werden?

Gruß Sepp


Ein kluger Mann macht nicht alle Fehler selbst.
Er lässt auch anderen eine Chance.

(Sir Winston Churchill)


AW: Anpassung eines Makros - Fortsetzung
23.02.2004 23:23:17
Stefan
Hallo Sepp,
tschuldigung dass ich mich so unkorrekt ausgedrückt habe. Ich versuchs nochmal mit einer Beispieltabelle. Vielleicht wirds dann verständlicher.
Anzeige
AW: Anpassung eines Makros - Fortsetzung
23.02.2004 23:51:14
Josef Ehrensberger
Hallo Stefan!
Letzter versuch für heute!
Nur die Spalte mit den Werten (Birne,Apfel,...) markieren!
Drei Spalten vor, und drei Spalten danach werden aufgeteilt.
Vor dem neuschreiben der zellen wird die entsprechende Anzahl
an Zeilen eingefügt.


Sub StringAufteilenA()
'Aufteilen von Strings mit Zeilenumbruch in einer Zelle
'auf einzelne Zellen(mit Nachbarzellen 3 links + 3 rechts)
'Zellen (Spalte 1) markieren
Dim strA As Variant, strB As Variant, strC As Variant, strD As Variant
Dim strX As Variant, strY As Variant, strZ As Variant
Dim varA() As Variant, varB() As Variant, varC() As Variant, varD() As Variant
Dim varX() As Variant, varY() As Variant, varZ() As Variant
Dim intC As Integer, intA As Integer, intB As Integer
Dim rng As Range
Dim lngRow As Long, intCol As Integer, intRC As Integer
   If Selection.Columns.Count > 1 Then Exit Sub
lngRow = Selection(1).Row
intCol = Selection.Column
intRC = Selection.Rows.Count
   For Each rng In Selection
   strA = Split(rng, Chr(10))
   strB = Split(rng.Offset(0, 1), Chr(10))
   strC = Split(WorksheetFunction.Rept(rng.Offset(0, 2) & vbLf, UBound(strA) + 1), Chr(10))
   strD = Split(WorksheetFunction.Rept(rng.Offset(0, 3) & vbLf, UBound(strA) + 1), Chr(10))
   strX = Split(WorksheetFunction.Rept(rng.Offset(0, -1) & vbLf, UBound(strA) + 1), Chr(10))
   strY = Split(WorksheetFunction.Rept(rng.Offset(0, -2) & vbLf, UBound(strA) + 1), Chr(10))
   strZ = Split(WorksheetFunction.Rept(rng.Offset(0, -3) & vbLf, UBound(strA) + 1), Chr(10))
   intB = intB + UBound(strA) + 1
      For intC = 0 To UBound(strA)
      ReDim Preserve varA(intB)
      varA(intA) = strA(intC)
      ReDim Preserve varB(intB)
      varB(intA) = strB(intC)
      ReDim Preserve varC(intB)
      varC(intA) = strC(intC)
      ReDim Preserve varD(intB)
      varD(intA) = strD(intC)
      ReDim Preserve varX(intB)
      varX(intA) = strX(intC)
      ReDim Preserve varY(intB)
      varY(intA) = strY(intC)
      ReDim Preserve varZ(intB)
      varZ(intA) = strZ(intC)
      intA = intA + 1
      Next
   Next
Rows(intRC + lngRow & ":" & lngRow + UBound(varA)).Insert Shift:=xlDown
   For intC = 0 To UBound(varA)
   Cells(intC + lngRow, intCol) = varA(intC)
   Cells(intC + lngRow, intCol + 1) = varB(intC)
   Cells(intC + lngRow, intCol + 2) = varC(intC)
   Cells(intC + lngRow, intCol + 3) = varD(intC)
   Cells(intC + lngRow, intCol - 1) = varX(intC)
   Cells(intC + lngRow, intCol - 2) = varY(intC)
   Cells(intC + lngRow, intCol - 3) = varZ(intC)
   Next
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

Gruß Sepp


Ein kluger Mann macht nicht alle Fehler selbst.
Er lässt auch anderen eine Chance.

(Sir Winston Churchill)


Anzeige
Vielen Dank
24.02.2004 18:53:43
Stefan
Hallo Sepp,
vielen Dank für deine Mühen. Ist echt super von Dir. Muß es nur noch etwas ausweiten auf mehr Nachbarzellen, aber das sollte ich hinbringen.
Dankbare Grüße
Stefan
Danke für die Rückmeldung! o.T.
24.02.2004 19:05:26
Josef Ehrensberger
Gruß Sepp

Ein kluger Mann macht nicht alle Fehler selbst.
Er lässt auch anderen eine Chance.

(Sir Winston Churchill)


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige