Excel - Une copie de macro dans une cellule basée sur un critère spécifique

Problème

Je suis coincé. J'espère que quelqu'un pourra m'aider aujourd'hui. J'ai un tableur Excel avec 1400 lignes. Les 3 premières lignes sont sans importance (titres). J'ai 3 cellules avec le contenu de $ tring (B: C: D). Ce que je dois faire, c'est créer une macro qui puisse spécifiquement rechercher dans la colonne B et la colonne D des valeurs non nulles. Il y a plusieurs cellules dans cette feuille de calcul qui doivent avoir la même valeur. Les colonnes B et D doivent être comparées et doivent être trouvées avec des valeurs non nulles. Et, dans le même cas où la colonne B est également retrouvée (boucle) (même contenu de cellule, mais ligne différente), la colonne D aura une valeur nulle (contenu manquant). Je dois remplir ce Col D avec le même contenu que le premier enregistrement qui contenait le contenu des Cols B et D. Dans mon exemple, la valeur est codée en dur, je ne sais pas comment le faire autrement. Je suis très perdue et j'ai besoin d'aide pour compléter ceci. C'est ce que j'ai.

 Sub _MacroUser10 () Ensemble I = Feuilles de calcul ("Feuille2") Dim d Dim jd = 1 'compteur de boucles j = 4' commence à la 4ème ligne en raison des en-têtes Do Until ActiveCell (I.Range ("B" & j) = " Groupe de portefeuilles d'utilisateurs ") et ActiveCell (I.Range (" D "& j null))" boucle If I.Range ("B" & j) = "User2010" Alors "la cellule est intitulée User2010 ... etc If I .Range ("D" & j) = "" Alors 'ceci est supposé trouver les valeurs nulles dans D d = d + 1 End If i.Rows (d) .Value = I.Rows (j) .Value End If j = j + 1 fin de boucle 

En tout. Je dois rechercher le contenu dans la cellule B $ et le contenu dans la cellule D $. Il y aura une ligne avec du contenu aux deux endroits. Ensuite, je dois rechercher toutes les autres lignes correspondantes qui correspondent à B $ et qui n'ont aucune valeur dans D $. Je dois ajouter les valeurs manquantes du D $ non nul au N nul.

Solution

Si le cas est toujours que la ligne remplie se produira avant la ligne vide, vous pouvez utiliser un objet dictionnaire. Pour ça

  • Parcourez votre premier rang jusqu'à la fin
  • Si les deux cellules ne sont pas vides, combinez la valeur de B et D en tant que clé et la valeur de C en tant que valeur.
  • Tout en parcourant les lignes, vérifiez d’abord si cette clé est dans le dictionnaire, si oui, vous avez la valeur sinon ajouter au dictionnaire

 'pour créer un objet dic Set dicMyDic = CreateObect ("Scripting.Dictionary")' voici comment la clé peut être strKey = B1 & "|" & D1 'vérifie si la valeur de D est vide ou non' pour ajouter la valeur à dic IF Non (dicMyDic.Exists (strKey)), puis dicMyDic.Add Key: = strKey, Item: = val 'pour obtenir la valeur de dic IF (dicMyDic.Exists (strKey)) puis val = dicMyDic (strKey) 

Merci à rizvisa1 pour cette astuce.

Article Précédent Article Suivant

Les Meilleurs Conseils