La réorganisation de Plusieurs Colonnes dans Excel VBA

Est-il un moyen de créer une "permutation" macro où vous entrez un ensemble de colonnes (Une....Z) et il donne un suppléant choisi de commande (par exemple, (B,A,E,D,C,...,Z))? J'imagine que c'est quelque chose qui a été fait avant, mais il est étonnamment difficile de trouver un précédent.

Au départ je pensais à un copier /coller à l'aide de Range().Copy /.Paste dans un pénible chemin ou de la même façon avec Columns, c'est:

Columns("C:C").Insert Shift:=xlToRight
Columns("D:D").Cut
Columns("A:A").Insert Shift:=xlToRight
Columns("G:G").Cut
Columns("E:E").Insert Shift:=xlToRight
...

Mise à JOUR:

J'ai trouvé le code suivant ici:

Sub REORDER()

Dim arrColOrder As Variant, ndx As Integer
Dim Found As Range, counter As Integer

'Place the column headers in the end result order you want.
arrColOrder = Array("COLUMN 2", "COLUMN 4", "COLUMN 6", "COLUMN 10", "COLUMN 1", _
                    "COLUMN 9", "COLUMN 3", "COLUMN 8", "COLUMN 7", "COLUMN 5")

counter = 1

Application.ScreenUpdating = False

For ndx = LBound(arrColOrder) To UBound(arrColOrder)

    Set Found = Rows("1:1").Find(arrColOrder(ndx), LookIn:=xlValues, LookAt:=xlWhole, _
                      SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)

    If Not Found Is Nothing Then
        If Found.Column <> counter Then
            Found.EntireColumn.Cut
            Columns(counter).Insert Shift:=xlToRight
            Application.CutCopyMode = False
        End If
        counter = counter + 1
    End If

Next ndx

Application.ScreenUpdating = True

End Sub

Quel est le processus de l'appel de ce code dans une macro plus grande?

  • Attribuer la lettre de colonne à une collection ou un dictionnaire d'objet à l'aide de la RandBetween fonction pour assigner une position aléatoire, peut-être? Puis itérer que la collecte et le ré-arranger les tables en conséquence?
  • Mes excuses, ma question était ambiguë. Je voulais dire que la macro de fixer un ordre choisi à l'avance. Droit maintenant, je suis simplement une itération de copier/coller le code VBA avec helper colonnes qui est probablement un drôle de manière de le faire.
  • Eh bien, si vous savez l'ordre que vous souhaitez qu'ils apparaissent dans les, qui devrait en faire beaucoup plus facile, non? Qu'avez-vous essayé jusqu'à présent?
  • Je vais mettre à jour mon post original.
InformationsquelleAutor 114 | 2014-05-16