Excel - makro koopia rakku, mis põhineb konkreetsetel kriteeriumidel

Probleem

Ma olen ummikus. Loodan, et keegi saab mind täna aidata. Mul on Exceli tabel 1400 rida. Esimesed kolm rida ei ole asjakohased (pealkirjad). Mul on 3 $ tring sisu sisaldavat rakku (B: C: D). Mida ma pean tegema, on luua makro, mis võib konkreetselt veerus B ja veerus D näha nullväärtusi. Selles arvutustabelis on mitu rakku, millel peab olema sama väärtus. Tuleb võrrelda B ja D veergu ning need tuleb leida koos nullväärtustega. Samal juhul, kui ka kolonn B leitakse uuesti (silmus) (sama lahtri sisu, kuid erinev rida), on D-veerul null-väärtus (puuduv sisu). Mul on vaja täita see Col D sama sisuga kui esimene rekord, millel oli Col B ja D sisu. Minu näites on väärtus kodeeritud, ma ei tea, kuidas seda teha. Ma olen väga kadunud ja ma vajan abi selle lõpuleviimiseks. See on see, mis mul on.

 Sub _MacroUser10 () Set I = töölehed ("Sheet2") Dim d Dim jd = 1 "silmusloendur j = 4" algab neljandast reast rubriikide Do Do to ActiveCell (I.Range ("B" & j) = "tõttu Kasutajaportfelli grupp ") ja ActiveCell (I.Range (" D "& j null)) silmus Kui I.Range (" B "& j) =" User2010 "Siis" on lahtrisse pealkiri User2010 ... jne. .Range ("D" & j) = "" Siis peaks see leidma nullväärtused D d = d + 1 lõpus Kui i.Rows (d) .Value = I.Rows (j). j = j + 1 Loop End Sub 

Kokkuvõttes. Pean otsima sisu lahtris B $ ja otsima sisu lahtrisse D $. Mõlemas kohas on üks rida sisuga. Siis pean leidma kõik teised sobivad read, mis vastavad B $ -le, millel ei ole D $ väärtusi. Pean lisama need puuduvad väärtused nullist D $ -st null-D $ -ni.

Lahendus

Kui juhtum on alati nii, et täidetud rida ilmub enne tühja, siis saate kasutada sõnastiku objekti. Selle eest

  • Loop läbi oma esimese rea kuni lõpuni
  • Kui mõlemad lahtrid ei ole tühjad, ühendage B ja D väärtus võtmeks ja väärtus C väärtuseks.
  • Ridade läbimisel kontrollige kõigepealt, kas see võti on sõnastikus, kui jah, siis on see väärtus sõnastikku täiendav

 'dic-objekti loomiseks Set dicMyDic = CreateObect ("Scripting.Dictionary")' on see võti strKey = B1 & "|" & D1 'kontrollige, kas D väärtus on tühi või mitte', et lisada väärtus dic-le, kui ei (dicMyDic.Exists (strKey)), siis dicMyDic.Add Key: = strKey, Item: = val ', et saada väärtus dic-st (dicMyDic.Exists (strKey)), siis val = dicMyDic (strKey) 

Tänu rizvisale1 selle näpunäite eest.

Eelmine Artikkel Järgmine Artikkel

Top Näpunäited