Tableコントロールの

+--+--+--+
.| A | B | C |
+--+--+--+
.|  D  |. E |
+-----+--+

を

+--+--+
.| A |.  |
+--+.D |
.| B |.  |
+--+--+
.| C.| E |
+--+--+

のように並べ替える関数を作成しています。
ColumnSpan、RowSpanによるセルのスライドなどあって苦労していますが、
「実は一発でできる関数がある」「有名なアルゴリズムがある」なんて事は
ないしょうか?