Excel VBA - Union and Intersect

Innehållsförteckning

Excel VBA har två metoder, som tillhör Application -objekt, för att manipulera två eller flera intervall: Union och Intersect.

Union

Unionmetoden returnerar alla celler i två eller flera intervall som skickas som argument.

Följande kommando väljer området som visas i bilden nedan:

1 Union (Range ("A1: B4"), Range ("B3: C6")). Välj

Du kan tilldela valfritt värde eller formel till intervallet som returneras av Union -metoden:

1 Union (Range ("A1: B4"), Range ("B3: C6")) = 10

Detta anger värdet 10 i varje cell i unionen.

Du kan linda alla funktioner som sammanfattar ett intervall kring en unionsmetod. Följande exempel returnerar summan av värdena i områdena A1: B4 och B3: C6:

1 Resultat = Application.WorksheetFunction.Sum (union (Range ("A1: B4"), Range ("B3: C6")))

Du kan bli förvånad över att få värdet i Resultat som 160! Även om det bara finns 14 celler i unionen (8 i varje intervall med 2 som är vanliga) när du tittar på Selection, returnerar Union faktiskt 16 celler, därav resultatet som 160.

Korsas

Intersect -metoden returnerar endast de vanliga cellerna i två eller flera intervall som skickas som dess argument.

Följande kommando väljer det område som visas (grått område) i bilden nedan:

1 Skär (Intervall ("A1: B4"), Område ("B3: C6")). Välj

Användning av Intersect

Den vanligaste användningen av Intersect är i händelser som är associerade med ett kalkylblad eller en arbetsbok. Den används för att testa om cell (erna) som ändrats tillhör ett intresseintervall. Följande exempel med kontroll om cell (erna) har ändrats (identifierat med mål) och intervall A1: A10 är vanliga och vidtag lämpliga åtgärder om de är det.

Intersect -objekt returnerar ingenting om det inte finns några gemensamma celler så Intersect (Target, Range ("A1: A10")) är ingenting kommer att vara sant om det inte finns några gemensamma celler. Att lägga till Not till villkoret gör det sant endast om resultatet av testet Intersect (Target, Range ("A1: A10")) är ingenting är falskt, med andra ord Target och Range A1: A10 har några celler gemensamt.

12345 Private Sub Worksheet_Change (ByVal Target As Range)If Not Intersect (Target, Range ("A1: A10")) är ingenting då'Ta önskad åtgärdAvsluta omAvsluta Sub

Skriven av: Vinamra Chandra

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave