Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dynamische Blockbildung und Neuanordnung Zelleinträge
#1
Hallo Zusammen,

eine leichte oder knifflige? Excel Frage, an die Experten hier.

Anbei siehe Bild, möchte ich die variablen Einträge (gehen immer von ProjektNr bis ProjektNr) in Spalte T und U, blockweise nebeneinander schreiben, (1 Block pro 2 Spalten) Ich habe meine Idee versucht anhand von 3 Beispielen farblich zu codieren, obschon ich mich auf die ganze Spalte T und U beziehen möchte.
Ich sehe die Schwierigkeit darin, die Abbruchbedingung pro Block, die ja in de Länge dynamisch ist, in einer Formel zu erzeugen.

Kann jmd helfen?

Beste Grüße

Manfred


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

wenn man das als Tabelle hätte, könnte man darüber nachdenken, eine Lösung zu konstruieren.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Hi

einfach mit einer Hilfsspalte. Formel in C3    =WENN(B3="";C2+1;C2)
Dann für die Blöcke die Funktion Filter verwenden.
Code:
____|___A___|_B|C|D|E|F|
   1|       |  | | | | |
   2|       |  | | | | |
   3|Pro 1  |  |1| | | |
   4|Text 1 | 1|1| | | |
   5|Text 2 | 2|1| | | |
   6|Text 3 | 3|1| | | |
   7|Pro 2  |  |2| | | |
   8|Text 4 | 4|2| | | |
   9|Pro 3  |  |3| | | |
  10|Text 5 | 5|3| | | |
  11|Text 6 | 6|3| | | |
  12|Text 7 | 7|3| | | |
  13|Text 8 | 8|3| | | |
  14|Text 9 | 9|3| | | |
  15|Text 10|10|3| | | |
  16|Text 11|11|3| | | |
  17|Pro 4  |  |4| | | |
  18|Text 12|12|4| | | |
  19|Text 13|13|4| | | |
  20|Text 14|14|4| | | |
Gruß Elex
Antworten Top
#4
Hallo,

hier ein VBA-Ansatz:

Code:
Sub T_1()
Dim rng As Range, r As Range, Bl As Range, ZL As Range

Set ZL = Range("V2")

Set rng = Range("U2:U" & Cells(Rows.Count, "U").End(xlUp).Row)

For Each r In rng.SpecialCells(xlCellTypeBlanks)
    Set Bl = Range(r.Offset(, -1), r.Offset(1).End(xlDown))
    Bl.Copy ZL
    Set ZL = ZL.Offset(, 2)
Next r
End Sub

mfg


Angehängte Dateien
.xlsm   CEF MTC Block.xlsm (Größe: 15,83 KB / Downloads: 3)
Antworten Top
#5
Danke alle alle Antwortenden!

Mit dem VBA Code konnte ich mein Problem lösen

Beste Grüße
Antworten Top
#6
Eine dynamische Tabelle (ab Zelle A1) mit 3 Spalten (Projekt, Resource A, Resource B) wäre viel besser
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Hallo Fennek,

Nachtrag;

Dein Ansatz hat tatsächlich recht gut funktioniert, allerdings ist mir noch eine Unstimmigkeit aufgefallen.
In Screenshot 2 siehst Du, dass leider "Projekt2" mit seinen Einträgen nochmals unter "Projekt1" kopiert wird.  
Das wäre noch das was nicht ganz passen würde. Ansonsten top!

Ich war so frei und habe im Code noch V2 durch W2 ersetzt (siehe Screenshot VBA), damit die kopierten Spalten etwas Abstand haben. Aber das hatte keinen Einfluss auf die verbleibende Auffälligkeit.

Danke und beste Grüße


Angehängte Dateien Thumbnail(s)
       
Antworten Top
#8
Jo, der Code erfordert mindestens 2 Zeile unterhalb des Projekt-Namens.
Antworten Top
#9
Mit einer weiteren Abfrage geht es:

Code:
Sub T_1()
Dim rng As Range, r As Range, Bl As Range, ZL As Range

Set ZL = Range("V2")

Set rng = Range("U2:U" & Cells(Rows.Count, "U").End(xlUp).Row)

For Each r In rng.SpecialCells(xlCellTypeBlanks)
    If Not VBA.IsEmpty(r.Offset(2)) Then
        Set Bl = Range(r.Offset(, -1), r.Offset(1).End(xlDown))
    Else
        Set Bl = Range(r.Offset(, -1), r.Offset(1))
    End If
    
    Bl.Copy ZL
    Set ZL = ZL.Offset(, 2)
Next r
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • MCT1979
Antworten Top
#10
Perfekt!

Nochmals vielen Dank für die kompetente und vor allem schnelle Hilfe!
Antworten Top


Gehe zu:


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