Excel - Sor másolása egy másik lapról
Probléma
2 Excelrel dolgozom, az egyik mező gyakori mind az excel "SID" -nél. Meg kell másolni az SID sorát az „ABC” -ből az Excel B-ből, és hozzá kell adnom ugyanazon SID „ABC” sorához az Excelben.
Kérjük, vegye figyelembe, hogy 14 lap van az Excel B-ben. A forrást, ahol az SID-t kell keresni, és a sort kell letölteni.
tehát 2 kihívásom van előttem:
- Válasszon ki egy SID-t az Excel A-ből, és keresse meg 14-ben az Excel B lapot
- Miután megtalálta a másolatot a megfelelő sorban a B-ben, és hozzáadta azt az Excel A kijelölt SID-hez.
Például:
Excel A SID üzenet száma Rendelés dátuma ABC 43556 23/05/2009
Excel B lap 3 SID Összes nap SDT XYZ 12 45 ABC 21 32
Az eredménynek Excelben kell lennie:
ABC 43556 23/05/2009 21 32
Megoldás
Erre a célra makro "tesztet" adok. a minta munkafüzetben az A (emlékezz arra, hogy az "excel" és az "A" között van hely) lap1, ahol a fő adatok hozzáadnak még egy mintaadatot az A3-tól a jobbra, mint ez
jkh 23456 2009/30/30
Mindkét SAMPLE munkafüzetet el kellett menteni és megnyitni.
Ezután próbálja meg a makrót (adtam egy másik makrót „visszavonás”, amely visszavonja a makró teszt eredményét)
Ha probléma merülne fel, mondja meg, hogy melyik kód utasítás adja meg a problémát, és ha van ilyen hibaüzenet
Parkolja le a makrókat az „A” excel VB szerkesztőjében (szigorúan gondoltam, hogy nem számít)
tesztelje a makrókat a minta munkafüzeteiben, és ha sikeres, használja az eredeti fájl makróját.
ELTÉRŐL, HOGY TÖRTÉNŐ KÖVETKEZŐK A SZÁLLÍTÁSI FÁJLOKBÓL SZÜKSÉGES, HOGY A FÁJLOK MEGHATÁROZHATÓ, HA SZÜKSÉGES SZÜKSÉG.
Makró 1:
Sub teszt () Dim r mint tartomány, c tartományként x x karakterláncként, j mint integer, k Mivel az integer Dim Cfind mint tartomány, r1 mint tartomány a munkafüzetekkel ("excel A.xls"). r = tartomány (.Range ("A2"), .Range ("A2"). Vége (xlDown)) Minden c esetén rx = c.Value Workbooks ("excel B.xls") j = .Worksheets.Count A k = 1 To j-hez .Worksheets (k) beállítása cfind = .Cells.Find.Find (ami: = x, lookat: xlWhole) Ha nincs cfind Nincs semmi, akkor állítsa az r1 = Range (cfind.Offset (0, 1), cfind.End (xlToRight)) r1.Copy GoTo beillesztése Vége Ha befejezi munkalapokat (k) Következő k Kilépés az End End-ből 'Második könyv beillesztésével: c.Offset (0, 3) .PasteSpecial Következő c Vége az első könyv végén Alatti
Makró 2:
Visszavonás () Munkafüzetekkel ("excel A.xls"). Munkalapok ("sheet1") Tartomány (.Range ("d1"), .Range ("d1"). Vége (xlToRight). Vége vége
jegyzet
Köszönet a venkat1926-nak a fórumon található tippért.