-2
votes

Créer un dictionnaire avec la valeur d'un tableau

Je travaille sur un rapport et j'essaie de produire mes données comme celle-ci INPUT:

 entrée

sortie

 sortie

Je pense que l'utilisation d'un dictionnaire avec chaque clé a plusieurs valeur des objets et leur mais je ne sais pas comment mettre en œuvre.


6 commentaires

Votre sortie ne peut pas être représentée à l'aide des paires de touches / valeur car "John" n'a pas de valeur. Et "vérifié". n'est pas unique.


Voici comment vous pouvez créer un objet dictionnaire dans VBA: docs.microsoft.com/en-us/office/vba/language/reference/... (vous pouvez également utiliser dim d , Set D = Nouveau Scripting.dictionner .


Vous pouvez utiliser le nom de la clé et un tableau 2D de fruit / comptage pour chacune des valeurs. Un dictionnaire n'est pas nécessaire ici si vous pouvez simplement boucler sur les lignes et créer la sortie directement.


Cela pourrait aider à utiliser la requête de puissance, d'impucher l'entrée, puis de créer la sortie avec un pivot basé sur l'entrée transformée.


Je suis désolé si ce n'est pas clair. Mais mon point consiste à construire un dictionnaire qui a "John", "Mary" comme clé. La clé "John" a plusieurs valeurs telles que Apple 2, Orange 4, etc. et la valeur "cochée" à la fin. Ensuite, je publie le dictionnaire sur la feuille. Si vous avez une meilleure façon, dites-moi s'il vous plaît. Merci.


Donc, si vous vous aboutez un dictionnaire lorsque vous avez écrit, vous devez ajouter le code au poste et dire où vous avez un problème. Et pourquoi avez-vous besoin d'un coché à la fin. Avez-vous besoin que seulement dans la sortie? À mon avis, il n'a aucun sens pour toujours ajouter vérifié à la fin.


5 Réponses :


0
votes

L'utilisation d'un dictionnaire ne fonctionnerait pas pour votre exemple de graphique. Un dictionnaire est utilisé pour contenir seulement deux valeurs de chaîne à l'aide d'une hache. Un exemple d'utilisation correctement d'un dictionnaire utilise correctement les deux mots "Bonjour" et "une salutation polie à un autre humain". La première chaîne est pour le mot et la seconde est la définition du mot, comme un dictionnaire régulier.

Je vous fournirais deux meilleures options. Vous pouvez créer un tableau 2D qui contient toutes vos valeurs, mais vous auriez besoin de sortir les étiquettes séparément des valeurs. Vous pouvez également créer un fichier qui contient les étiquettes et les valeurs de votre graphique.

Si vous avez besoin de plus d'aide, veuillez fournir plus d'informations sur ce que vous essayez de faire avec le graphique affiché. Un tableau est préférable pour les calculs, mais un fichier est préférable à stocker les valeurs et à afficher le graphique.


4 commentaires

"Un dictionnaire est utilisé pour contenir seulement deux valeurs de chaîne à l'aide d'une haquetable" - Ce n'est pas vrai, au moins dans VBA. La clé est une chaîne, mais la valeur peut être quelque chose que vous souhaitez ajouter.


Alors, dis-tu que ce n'est pas vrai parce que la valeur peut contenir autre chose qu'une chaîne ou qu'un dictionnaire peut contenir plus d'une valeur pour une clé?


@ Mry_02: Regardez ma réponse deuxième réponse . Cela pourrait clarifier ce que Tim Williams a dit.


Oui, que la valeur n'a pas besoin d'être une chaîne et, bien qu'elle ne puisse pas être plusieurs choses, elle peut être une matrice (par exemple) ou une collection de nombreuses choses.



0
votes

première réponse comme indiqué dans l'un de mes commentaires, vous pouvez utiliser la requête d'alimentation pour impublir les données. Comme exemple de données, j'ai pris des données comme celle-ci

 Entrez la description de l'image ici

Après impuche des données avec PowerQuery (Goto Data à partir de la table / plage, sélectionnez les colonnes avec Apple, Orange, etc. Dans l'éditeur de requête d'alimentation, sélectionnez l'onglet transformer et là colonnes d'impulsion ) on obtient

 Entrez la description de l'image ici

alors vous pivotez à nouveau les données et vous obtenez

 Entrez la description de l'image ici


0 commentaires

0
votes

deuxième réponse serait d'utiliser un dictionnaire de dictionnaires. Encore une fois les données d'entrée sont Entrez la description de l'image ici

avec le code suivant xxx

Vous obtenez la sortie suivante dans la fenêtre immédiate

Entrez la description de l'image ici


0 commentaires

0
votes

Sauf si vous allez faire autre chose avec les données collectées, il n'y a pas besoin de la structure de données intermédiaire:

Dim data, r As Long, c As Long

data = ActiveSheet.Range("A3:D5").Value
For r = 2 To UBound(data, 1)
    Debug.Print data(r, 1)
    For c = 2 To UBound(data, 2)
        Debug.Print data(1, c) & " " & data(r, c)
    Next c
    Debug.Print "Checked."
Next r


0 commentaires

0
votes

L'emplacement des données doit être identique à celui de l'image de fonctionner. XXX

Entrez la description de l'image ici

Feuille de résultats

 Entrez la description de l'image ici


0 commentaires