En passant une gamme de Excel Fonction Définie par l'Utilisateur et de l'affecter à un tableau
Je suis en train de
- passer deux gammes - plusieurs lignes de colonne unique à une fonction définie par l'utilisateur dans Excel 2007,
- à l'attribuer à un tableau pour le traitement.
Quelqu'un peut-il me dire comment faire pour attribuer une telle gamme à un tableau?
La plage n'est pas constante comme je suis en utilisant un UDF dans des cellules différentes pour les différentes données donc je ne peut pas utiliser e,g, Range("A1:A10")
Le code fonctionne lorsque je viens d'utiliser Data1.Rows.Cells(i, 1)
au lieu des tableaux. Mais je pense qu'il est préférable d'utiliser une dimensions des tableaux pour plus d'efficacité.
Voici mon code actuel
Function Sample(Data1 As Range, Data2 As Range) As Double
'Size of Data1 and Data2
Dim rows As Integer
rows = Data1.Rows.Count
'Declaring two one dimensional arrays
Dim data1Array(rows) As Double --- Getting error here
Dim data2Array(rows) As Double --- Getting error here
Dim diff As Double
Dim average As Double
Dim i As Integer
'Assigning Range to Array
data1Array = Data1 --- Getting Error here
data2Array = Data2 --- Getting Error here
average = 0
diff = 0
For i = 1 To rows
diff = data1Array(i) - data2Array(i)
If diff < 0 Then
diff = diff * -1
End If
average = diff + average
Next i
Sample = average/rows
End Function
Déclarer Data1Array et Data2Array comme des Variantes (affectation de plages pour eux, ne fonctionnera pas sinon).
Merci pour la correction, la deuxième erreur a disparu. Mais d'abord, on est toujours là. Maintenant, je peux accéder à des données dans Data1Array mais à travers deux dimensions, comme cela Data1Array(i,1). Peut-il être comme ça Data1Array(i) c'est à dire une dimension?
D'abord-plutôt ne pas utiliser
Déclarer votre tableau de variables de cette façon:
oui.
Merci pour la correction, la deuxième erreur a disparu. Mais d'abord, on est toujours là. Maintenant, je peux accéder à des données dans Data1Array mais à travers deux dimensions, comme cela Data1Array(i,1). Peut-il être comme ça Data1Array(i) c'est à dire une dimension?
D'abord-plutôt ne pas utiliser
rows
comme nom de variable - c'est le mot-clé dans Excel VBA...Déclarer votre tableau de variables de cette façon:
Dim data1Array as Variant
. Dimension de votre tableau sera mis automatiquement lorsque la ligne data1Array = Data1
est appelé.oui.
Application.Transpose
pouvez forcer une seule ligne ou une seule colonne 2D variante en 1D. Voir ci-dessousOriginalL'auteur MrA2Z | 2013-04-11
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela pour travailler avec les 1D plages qui comprend des essais pour
échantillon sous
fonction
OriginalL'auteur brettdj