Excel: una copia macro alla cella in base a un criterio specifico

Problema

Sono bloccato. Spero che qualcuno possa darmi una mano oggi. Ho un foglio di calcolo Excel con 1400 righe. Le prime 3 righe sono irrilevanti (titoli). Ho 3 celle con $ tring content (B: C: D). Quello che devo fare è creare una macro che possa guardare in modo specifico nella colonna B e nella colonna D per valori non nulli. Ci sono più celle in questo foglio di calcolo che devono avere lo stesso valore. Le colonne B e D devono essere confrontate e devono essere trovate con valori non nulli. E, nello stesso caso in cui anche la colonna B viene ritrovata (loop) (stesso contenuto di celle, ma riga diversa) Col D avrà un valore nullo (contenuto mancante). Devo riempire questo Col D con lo stesso contenuto del primo record con contenuti di tipo B e D. Nel mio esempio il valore è hard coded, non so come altro farlo. Sono molto perso e ho bisogno di aiuto per completare questo. Questo è quello che ho.

 Sub _MacroUser10 () Imposta I = Fogli di lavoro ("Foglio2") Dim d Dim jd = 1 'contatore di loop j = 4' inizia alla 4a riga a causa di intestazioni Do Until ActiveCell (I.Range ("B" & j) = " User Portfolio Group ") E ActiveCell (I.Range (" D "& j null)) 'loop If I.Range (" B "& j) =" User2010 "Quindi' la cella è intitolata User2010 ... ecc Se io .Range ("D" & j) = "" Allora 'questo dovrebbe trovare i valori nulli in D d = d + 1 Fine Se i.Rows (d) .Valore = I.Rows (j) .Valore Fine Se j = j + 1 Loop End Sub 

Tutto sommato. Devo cercare il contenuto in Cella B $ e cercare il contenuto in Cella D $. Ci sarà una riga con il contenuto in entrambi i posti. Quindi ho bisogno di trovare tutte le altre righe corrispondenti che corrispondono a B $ che non hanno valori in D $. Devo aggiungere quei valori mancanti dal D $ non nullo al D $ null.

Soluzione

Se il caso è sempre che la riga piena si verifichi prima di quella vuota, allora puoi usare l'oggetto dizionario. Per quello

  • Passa attraverso la prima fila fino alla fine
  • Se entrambe le celle non sono vuote, combinare il valore di B e D come chiave e il valore di C come valore.
  • Mentre passi attraverso le righe, per prima cosa controlla se quella chiave è nel dizionario, se sì, hai il valore aggiunto nel dizionario

 'per creare dic oggetto Set dicMyDic = CreateObect ("Scripting.Dictionary")' questo è il modo in cui la chiave può essere strKey = B1 & "|" & D1 'controlla se il valore di D è vuoto o no' per aggiungere il valore a dic IF Not (dicMyDic.Exists (strKey)) poi dicMyDic.Add Key: = strKey, Item: = val 'per ottenere il valore da dic IF (dicMyDic.Exists (strKey)) then val = dicMyDic (strKey) 

Grazie a rizvisa1 per questo suggerimento.

Articolo Precedente Articolo Successivo

I Migliori Consigli