Microsoft Excel

Herbers Excel/VBA-Archiv

Datenblöcke von untereinander nach nebeneinander | Herbers Excel-Forum


Betrifft: Datenblöcke von untereinander nach nebeneinander von: Waverd
Geschrieben am: 10.02.2012 14:43:43

Hallo zusammen,

nach einiger Internetrecherche würde ich hier gern mein Problem vorstellen:

Ich habe ein Arbeitsblatt, in dem von B:M Datensätze stehen, die jeweils 32 Zeilen lang sind.
Das ganze geht dann circa 6000 Zeilen lang nach unten. In Spalte A steht dementsprechend für jeden Datensatz dieselbe Beschriftung immer untereinander.

Ich würde das ganze gerne aufbereiten. Ich habe es bereits via Makro aufzeichnen versucht, aber irgendwie funktioniert das nicht. Ein klassisch Transponier-Problem ist es auch nicht.

Mein Ziel ist, dass die Datensätze von B1:M32 und dann B33:M64 und dann B65:M96 alle nebeneinander dargestellt werden.

Könnt ihr mir dabei weiterhelfen?

Mit besten Grüßen
waverd

  

Betrifft: AW: Datenblöcke von untereinander nach nebeneinander von: Dieter
Geschrieben am: 10.02.2012 14:58:30

Hallo,

wenn ich Dich richtig verstanden habe, ist der Bereich B1:M32 1 Datensatz und soll nebeneinander in eine einzige Zeile (also mit insgesamt 385 Spalten).

Da in A pro Datensatz immer die gleichen Einträge sind, würde ich an Deiner Stelle das ganze als CSV speichern und anschließend per Suchen und Ersetzen die betreffenden ENTER durch TAB ersetzen.

Gruß
Dieter


  

Betrifft: AW: Datenblöcke von untereinander nach nebeneinander von: Waverd
Geschrieben am: 10.02.2012 15:12:35

Hi,

danke für deine Antwort - nein, vielleicht ist meine Begriffswahl unglücklich. Ich habe hier folgendes:

B1:M32 ist ein Block Daten. In A1:32 steht die Zeilenbeschriftung (Name, Ort, etc.) und in B1:M1 steht die Identifikationsnnummer. Sagen wir das sei Block A.

Darunter steht nun Block C. Unter diesem wiederum Block D und so weiter. Jeweils mit der selben Zeilenbeschriftung, aber jeweils anderen Identifikationssnummern.

Ein Beispiel für den derzeitigen Stand:

Name 100 101 102
Ort Bremen Bayreuth Berlin
XYZ ... ... ...
Name 802 803 806
Ort Aachen Musterstadt München
XYZ ... ... ...
Name
Ort
[...]

Daher möchte ich gerne Block A neben Block B, daneben Block C und so weiter stehen haben:

Name 100 101 102 802 803 806 usw.
Ort
XYZ

Ist es so verständlicher?

BG waverd


  

Betrifft: AW: Datenblöcke von untereinander nach nebeneinander von: Waverd
Geschrieben am: 10.02.2012 15:13:22

Sry verklickt, Frage ist noch offen.


  

Betrifft: Rückfrage : Tabellenaufbau von: NoNet
Geschrieben am: 10.02.2012 15:15:42

Hallo Waver,

habe ich den Tabellenaufbau SO richtig verstanden (hier : Datensätze in Spalten C:D, je 3 Zeilen lang, in Spalte A jeweils die 3 Beschriftungen) :

ABC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Tabelle eingefügt mit Syntaxhighlighter 4.15

Wenn nicht : poste doch bitte mal einen kleinen Ausschnitt Deiner Tabelle !

Gruß, NoNet


  

Betrifft: AW: Rückfrage : Tabellenaufbau von: Waverd
Geschrieben am: 10.02.2012 15:37:24

Hey NoNet,

genau so sieht es aus! So hier mal meine Daten veranschaulicht (habe zwei Spalten gelöscht weil verbunden und leer):

Ist: http://cl.ly/2O3Y3k1v301e0u3K3341 (den Syntaxhighlighter krieg ich grad nicht zum funktionieren, probier ich heute abend nochmal in ruhe, guter tipp)
Soll: http://cl.ly/2O1w0x2I3i041O2c1B46

Kennst du eine praktische Lösung?

BG waverd


  

Betrifft: Vorschlag von: Erich G.
Geschrieben am: 10.02.2012 17:50:02

Hallo,
probier mal (Formel von A1 nach unten, von B1 nach unten und nach rechts kopieren):

 AB
1ID100
2NamePeter

Formeln der Tabelle
ZelleFormel
A1=QQQQ!A1
B1=INDEX(QQQQ!$B$1:$K$6999;1+32*KÜRZEN((SPALTE()-1)/10)+REST(ZEILE()-1;32); 1+REST(SPALTE()-2;10))
A2=QQQQ!A2
B2=INDEX(QQQQ!$B$1:$K$6999;1+32*KÜRZEN((SPALTE()-1)/10)+REST(ZEILE()-1;32); 1+REST(SPALTE()-2;10))

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: neuer Versuch von: Erich G.
Geschrieben am: 10.02.2012 18:24:28

Hi,
mein Vorschlag hatte noch einen Fehler - hier sind hoffentlich weniger drin:

 AB
1ID100
2NamePeter

Formeln der Tabelle
ZelleFormel
A1=QQQQ!A1
B1=INDEX(QQQQ!$B$1:$K$6999;1+32*KÜRZEN((SPALTE()-2)/10)+REST(ZEILE()-1;32); 1+REST(SPALTE()-2;10))
A2=QQQQ!A2
B2=INDEX(QQQQ!$B$1:$K$6999;1+32*KÜRZEN((SPALTE()-2)/10)+REST(ZEILE()-1;32); 1+REST(SPALTE()-2;10))

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: neuer Versuch von: Waverd
Geschrieben am: 10.02.2012 20:26:16

Hey,

danke für deine tolle Lösung. Nun ist bei mir das Problem aufgetaucht, dass nicht alle "Blöcke" gleich lang "in Zeilen " sind, d.h. einige sind 36 Zeilen lang und andere nur 32 Zeilen.

Ich hab schon daran gearbeitet. Ich brauche nur einen VBA-Code, der in Spalte A nach einer Zelle mit dem Inhalt "Dummy1" sucht und über dieser Zelle eine neue leere Zeile einfügt.

Kannst du das? Wenn das klappen würde, könnte ich deinen ersten/zweiten Lösungsvorschlag ganz toll und einfach übernehmen.


  

Betrifft: AW: neuer Versuch von: Waverd
Geschrieben am: 10.02.2012 20:38:02

Ich hab schon mit folgendem Versuch gespielt, aber der bewirkt nichts (auch keine Fehlermeldung):

Sub LeerZeile()
Dim a As Range
Dim i As Integer
With Sheets("Table1")
i = Cells(Rows.Count, 1).End(xlUp).Row '.Offset(1, 0).Select
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If UCase(Cells(i, 1).Value) Like "Dummy1" Then
Cells(i - 1, 1).EntireRow.Insert
End If
Next
End With
End Sub



  

Betrifft: AW: neuer Versuch - Code von: Erich G.
Geschrieben am: 11.02.2012 01:13:36

Hi,
probier mal

Option Explicit

Sub LeerZeile()
   Dim ii As Long ' bei Zeilennummern immer besser als Integer

   With Sheets("Table1")
      For ii = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
         If LCase(.Cells(ii, 1)) = "dummy1" Then .Rows(ii).Insert
      Next ii
   End With
End Sub
Wofür wurde vor der Schleife das i berechnet? Die Schleife ändert es sofort.

Warum schriebst du "Like"?

"With Sheets("Table1")" ist völlig wirkungslos, wenn danach kein Ausdrucck kommt, der mit einem Punkt beginnt.
Es könnte sein, dass "With" gar nicht gebraucht wird - hängt vom Zusammenhang ab.

Cells(i - 1, 1).EntireRow ist einfach Rows(i-1)

Mit meinem Code wird die neue Zeile über der dummy-Zeile mit Rows(i).Insert eingefügt.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: neuer Versuch - Code von: Waverd
Geschrieben am: 11.02.2012 17:39:49

Super, herzlichen Dank. Hab es damit umbauen können.

Ein schönes Wochenende wünsche ich!

BG waverd


Beiträge aus den Excel-Beispielen zum Thema "Datenblöcke von untereinander nach nebeneinander"