Excel - lahtri A1 võrdlemine kogu A-veerguga lehel 2
Probleem
Olen püüdnud võrrelda leht A2 A2 lehele A2 A2 kuni A500 ja kui see eksisteerib kusagil lehel2, siis kopeerige see kogu rida uuele lehele.
Olen eksperimenteerinud paljude makro-koodidega teistelt, kuid seni pole tõelist edu saavutatud.
Mõtle, kuidas öelda, et koodis on mulle natuke raske. Ma püüan selle üles riputada.
võrdlema ()
Dim LastRow_1 kui terviklik
Dim LastCol_1 kui terviklik
Dim Data_1 vahemikus
Dim LastRow_2 kui terviklik
Dim LastCol_2 kui terviklik
Dim Data_2 as vahemik
Dim Sh_1 töölehena
Dim Sh_2 töölehena
Dim X nii kaua
Dim Y nii kaua
Dim C_1 as vahemik
Dim C_2 as vahemik
Määra Sh_1 = ActiveWorkbook.Sheets ("Master")
Määra Sh_2 = ActiveWorkbook.Sheets ("Inventory")
LastRow_1 = Sh_1.range ("A5000"). Lõpp (xlUp)
LastCol_1 = Sh_1.range ("A5000"). Lõpp (xlToLeft).
Määrake Data_1 = Sh_1.range ("A2"). Suuruse muutmine (LastRow_1, LastCol_1)
LastRow_2 = Sh_2.range ("A5000"). Lõpp (xlUp)
LastCol_2 = Sh_2.range ("A5000"). Lõpp (xlToLeft).
Määrake Data_2 = Sh_2.range ("A2"). Suuruse muutmine (LastRow_2, LastCol_2)
Iga C_1 andmete puhul_1
Iga C_2 kohta Data_2
Kui C_2 = C_1
'leidis lehel2 lahtri, mis sobis lahtrisse 1
nüüd tehke seda, mida sa pead tegema
Data_2.EntireRow.Copy Destination: = töölehed ("New_Master") vahemik ("A5000"). Lõpp (xlUp) .Offset (1, 0)
Lõpeta kui
Järgmine C_2
Järgmine C_1
lõpu alam
Selle käivitamisel kopeerib see kõik lihtsalt lehele, mida nimetatakse New_Master, sealhulgas mitte-vasted.
Mida ma olen kadunud? See peab olema ilmne, see on tavaliselt nii.
Lahendus
Peate lihtsalt kirjutama:
Data_2.EntireRow.Copy
Te kopeerite kogu vahemiku "Data_2", mis vastab lehe "Inventory" veerule A
Kui soovid kopeerida ainult Data_2-s ridu, mis vastavad Data_1-le, kirjutage
C_2.EntireRow.Copy
See on nii!
Märge
Tänud Ivan-hoe eest selle foorumi vihje eest.