J'essaie de transposer une gamme de cellules dans Excel via VBA Macro, mais je reçois des erreurs, principalement une erreur 91.
Je suis assez nouveau à VBA et je n'ai pas beaucoup d'idée des fonctions non plus. P>
Range(InRng).Select Set Range1 = Selection Dim DestRange As Range Set DestRange = Application.WorksheetFunction.Transpose(Range1)
6 Réponses :
Vous n'avez pas besoin de faire cela. Voici comment créer une méthode de co-variance: P>
http://www.youtube.com/watch?v=rqafc4jxd4a < / p>
Vous pouvez également utiliser un emballage d'analyse statistique qui Excel a. P>
Merci pour votre contribution, mais je dois créer une macro pour le faire. J'ai le forumla et ça va bien pour moi. Le seul problème consiste également à intégrer la fonction Transpose
Ensuite, je ne sais pas si vous comprenez comment utiliser Application.worksheetFunction. correctement.
Copiez d'abord la plage source, puis Coller-spécial sur la plage de la cible avec transpose: = True, échantillon court: La fonction transpose prend le paramètre de type varien et renvoie la variante. p> Sub transposeTest()
Dim transposedVariant As Variant
Dim sourceRowRange As Range
Dim sourceRowRangeVariant As Variant
Set sourceRowRange = Range("A1:H1") ' one row, eight columns
sourceRowRangeVariant = sourceRowRange.Value
transposedVariant = Application.Transpose(sourceRowRangeVariant)
Dim rangeFilledWithTransposedData As Range
Set rangeFilledWithTransposedData = Range("I1:I8") ' eight rows, one column
rangeFilledWithTransposedData.Value = transposedVariant
End Sub
La question avec cette approche est que je ne peux pas copier la plage en cellules. J'ai juste besoin des valeurs brutes transposées que je peux ensuite passer sur une fonction qui calcule la co-variance.
J'ai essayé votre code mis à jour, mais le Sourcerowrangevariant et Transposedvariant ont les mêmes valeurs après avoir exécuté la fonction. Ceci est maintenant réparé. Vous appeliez Application.Transposez deux fois dans votre code.
Ceci vous obtient x et x 'comme des tableaux de variante que vous pouvez passer à une autre fonction.
Dim X() As Variant
Dim XT() As Variant
X = ActiveSheet.Range("InRng").Value2
XT = Application.Transpose(X)
La fonction de co-variance que j'ai accepte la plage d'un paramètre, ce que le code ci-dessus est une variante, une recherche rapide de Google indique qu'il n'est pas possible de convertir une variante en gamme. Y a-t-il quelque chose d'autre que je dois faire?
Ne devrait-il pas être application.worksheetfunction.transpose (x)
@Andrew u Voir l'autre réponse ici
En référence strictement en référence au préfaquage "transpose", par le livre, soit on fonctionnera; I.e., Application.Transpose () ou Feuille de travail.Transposez (), et par expérience, si vous aimez vraiment la dactylographie, l'application.worksheetfunction.Transposez () va également fonctionner - P>
Quelque chose comme ça devrait le faire pour vous. Vous pouvez le faire aussi. P> Sub TransposeFormulas()
Dim vFormulas As Variant
Dim oSel As Range
If TypeName(Selection) <> "Range" Then
MsgBox "Please select a range of cells first.", _
vbOKOnly + vbInformation, "Transpose formulas"
Exit Sub
End If
Set oSel = Selection
vFormulas = oSel.Formula
vFormulas = Application.WorksheetFunction.Transpose(vFormulas)
oSel.Offset(oSel.Rows.Count + 2).Resize(oSel.Columns.Count, oSel.Rows.Count).Formula = vFormulas
End Sub
Si vous souhaitez simplement copier et transposer les valeurs dans le Presse-papiers, vous pouvez utiliser le Makro suivant:
Sub PasteVal()
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End Sub