J'ai besoin de scinder une chaîne de 20 chiffres individuellement et de multiplier chacune d'une valeur par une valeur.
Result = 51x1 + 73x1 + 17x6 + 89x0 + 38x4 + 62x9 + 45x9 + 53x9 + 15x1 + 50x2 + 5x3 + 49x4 + 34x0 + 81x0 + 76x0 + 27x0 + 90x2 + 9x5 + 30x8 + 3x6 = 2627
3 Réponses :
Vous pouvez le faire avec SQL. et insérez ces lignes: p> Ensuite, exécutez cette requête: p> résultat: p>
Créez une table, disez avec nom poids code>, avec 2 colonnes:
Je ne peux pas stocker ces chiffres. La chaîne est générée par chaque citation. J'ai des dozelens de citations par le client.
Vous devez en quelque sorte commander ces chiffres, car la commande est importante afin de multiplier chacune d'elles avec un chiffre dans une position spécifique de la chaîne, non? Vous devez donc les stocker, sinon dans une table, puis dans une structure comme un tableau et créer une fonction de code VBA pour obtenir le résultat.
Dans VBA, vous pouvez faire quelque chose comme ceci:
Dim a(20) as Integer a(1) = 51 a(2) = 73 ⦠a(20) = 3 Dim Result AS Long: Result = 0 For i = 1 to 20 Result = Result + CInt(Mid(MyString,i,1)) * a(i) Next i
En fait, une volonté aura des valeurs d'un (0) jusqu'au (20). A (0) n'est tout simplement pas utilisé. J'ai choisi de rendre le code plus simple et plus lisible, plutôt que d'utiliser une valeur supplémentaire de RAM.
Désolé je ne réalisais pas ça. Agréable.
Pour être honnête, je devais vérifier et vérifier quand j'ai vu cela, car dans toutes les autres langues, une déclaration d'un tableau avec 20 code> aurait effectivement 20 valeurs de 0 à 19. Cela semble être unique. VBA particularité.
La cohérence de la structure est essentielle dans la manipulation des chaînes. Supposons qu'il y aura toujours 20 chiffres dans la chaîne et chaque enregistrement aura de la valeur.
Calculez 20 colonnes et ajoutez-les ensemble pour le total - Voici 2: P>
une relation cartésien avec des tables d'agrégat Calcs utilisant des tables de facteurs de données et de poids peut calculer le total - cartésien peut également effectuer lentement avec Grand DataSet: P> Sélection de citations. *, MID ([Données], 1,1) * 53 en tant que, moyenne ([DONNE], 2,1) * 71 comme B, [A] + [B] comme total des guillemets; code> p> pourrait tirer le facteur de poids de la table. Dlookup est à sens unique, mais un agrégat de domaine peut entraîner des performances lentes dans un ensemble de données volumineux, afin que les facteurs de poids ne changent jamais, ne veulent probablement pas que ceci: p>
Sélectionnez des devis.data, Mid ([Données], 1,1) * Dlookup ("Poids", "Facteurs", "ID = 1") en tant que, MID ([Données], 2,1) * Dlookup ("Poids", "Facteurs", "ID = 2" ) Comme b, [a] + [b] comme total des citations; code> p>
Function GetTotal(strD) As Long
Dim rs As DAO.Recordset, x As Integer
Set rs = CurrentDb.OpenRecordset("SELECT Weight FROM Factors ORDER BY ID")
For x = 1 To 20
GetTotal = GetTotal + Mid(strD, x, 1) * rs!Weight
rs.MoveNext
Next
End Function
Où sont les multiplicateurs
51, 73, 17 ... code> viennent de?
Les multiplicateurs sont toujours les mêmes.