Feld 1&2 u. 8&9 u. 15&16 ... kopieren
#1
Hallo.

Habe ein Tabelle aus der ich Feld 1&2 , Feld 8&9 , Feld 15&16 usw. (immer 7 Felder mehr) kopieren will, das es keine Leer spalten  mehr gibt.

Bild sagt mehr als 1000 Worte.

[Bild: attachment.php?aid=23822]


Womit macht man das am besten?

Danke.


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
Hola,

Code:
=WENNFEHLER(INDEX($E$7:$Y$7;AGGREGAT(15;6;SPALTE($E$1:$Y$1)-4/(($E$6:$Y$6="mo")+($E$6:$Y$6="di"));SPALTE(A1)));"")

Gruß,
steve1da
Antworten Top
#3
Moin,

wenn es dir darum geht, Leerspalten zu entfernen, würde ich einfach diese markieren und mit STRG & - entfernen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#4
Ich vermute mal, dass es sich um einen Jahreskalender handelt und die Daten nicht bei Spalte Y aufhören.
Mit VBA auf diesem Weg:

Code:
Sub uebertragen()
Dim i As Integer, j As Integer
Application.ScreenUpdating = False

j = 5
With ActiveSheet
   For i = 5 To .Cells(6, .Columns.Count).End(xlToLeft).Column Step 7
       .Range(.Cells(7, i), .Cells(7, i + 1)).Copy
       .Cells(16, j).PasteSpecial Paste:=xlValues
       j = j + 2
   Next i
End With

Application.CutCopyMode = xlCopy
Application.ScreenUpdating = True
End Sub
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • Frank_74
Antworten Top
#5
@ MisterBurns

Ja, es geht sich um einen Jahreskalender.

Das Macro funktioniert auch (in der Beispieltabelle).

Wie hast Du in dem Macro den Startpunkt (hier E7) definiert?
Wie hast Du festgelegt wo es hin kopiert werden soll?



for i = 5  --> die 5 ergibt das E ? Bei Spalte F müsste da also eine 6 stehen?



Danke!

EDIT:

Habe es mit try&error hinbekommen.

Danke noch mal 


Muss nun nur noch testen ob es in der "richtigen" Tabelle auch klappt.
In den Feldern stehen nämlich "Formeln" und es soll da natürlich nur der Wert kopiert werden.
Antworten Top
#6
Bleib bei Formeln. Anschließend:

.Value = .Value

EDIT: Hat MrBurns auch schon gemacht (?)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#7
Hallo,

hätte da noch eine Frage / Problem.

Wenn ich in der Tabelle was ändere. z.B. weit oben Zeilen einfüge, dann funktioniert das Macro leider nicht mehr.

[Bild: attachment.php?aid=24184]

Die Zeilennummern "unten" ändern sich ja. das Macro ändert sich nicht. 
Dann findet das Macro ja nicht mehr die richtigen Daten.

Kann man das irgendwie umgehen?


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#8
Schau dir diese Zeilen an:
Code:
j = 5             'Zielspalte (zB 5 = Spalte E)
With ActiveSheet
   For i = 5 To .Cells(6, .Columns.Count).End(xlToLeft).Column Step 7     'Schleife für den zu kopierenden Bereich. Beginnt bei Spalte 5 und läuft bis zur letzten gefüllten Spalte in Zeile 6
                                                                         'i ist die Variable für die Spalte des zu kopierenden Bereichs
       .Range(.Cells(7, i), .Cells(7, i + 1)).Copy      'Kopiert den Bereich Spalte i, Zeile 7 bis Spalte i+1, Zeile 7
       .Cells(16, j).PasteSpecial Paste:=xlValues       'Fügt den kopierten Bereich in Spalte j, Zeile 16 ein
       j = j + 2                                        'erhöht den Spaltenzähler j um 2. j ist die Variable für die Zielspalte
   Next i
End With
Klar?
Schöne Grüße
Berni
Antworten Top
#9
E16[:Z16]: =INDEX(7:7;SPALTE(B7)*3,5-REST(SPALTE(B7)*3,5;1)*5-2)

als Formellösung ohne VBA
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • Frank_74
Antworten Top
#10
@LCohen

Funktioniert Super.

Muss mal ein wenig drüber nach grübeln was da genau passiert und wie das Funktioniert.

Gruß, Frank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste