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.
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela devrait vous obtenir a commencé. Il aura besoin d'un peu de révision que je n'ai pas de temps, si vous avez l'intention de l'utiliser sur des tables qui ne commencent pas dans la Ligne 1.