Ši pamoka parodys, kaip naudoti „Excel Sum“ funkciją VBA
Sumos funkcija yra viena iš plačiausiai naudojamų „Excel“ funkcijų ir tikriausiai pirmoji, kuria „Excel“ vartotojai išmoksta naudotis. VBA iš tikrųjų neturi atitikmens - vartotojas turi naudoti integruotą „Excel“ funkciją VBA naudodamas „WorkSheetFunction“ objektas.
Sumos darbalapio funkcija
„WorksheetFunction“ objektu galima iškviesti daugumą „Excel“ funkcijų, kurios pasiekiamos „Excel“ dialogo lange Įterpti funkciją. SUM funkcija yra viena iš jų.
123 | Papildoma testavimo funkcijaDiapazonas ("D33") = Application.WorksheetFunction.Sum ("D1: D32")Pabaiga Sub |
Funkcijoje SUM galite turėti iki 30 argumentų. Kiekvienas iš argumentų taip pat gali būti susijęs su langelių diapazonu.
Šis toliau pateiktas pavyzdys pridės langelius nuo D1 iki D9
123 | Antroji testo suma ()Diapazonas ("D10") = Application.WorksheetFunction.SUM ("D1: D9")Pabaiga Sub |
Žemiau pateiktame pavyzdyje bus pridėtas diapazonas D stulpelyje ir diapazonas F stulpelyje. Jei neįvesite Application objekto, jis bus laikomas.
123 | Antroji testo suma ()Diapazonas ("D25") = WorksheetFunction.SUM (Diapazonas ("D1: D24"), diapazonas ("F1: F24"))Pabaiga Sub |
Atkreipkite dėmesį, kad vieno langelio diapazono atveju formulėje prieš langelius nereikia nurodyti žodžio „Diapazonas“, tai daroma pagal kodą. Tačiau jei naudojate kelis argumentus, turite tai padaryti.
Sumos rezultato priskyrimas kintamajam
Galbūt norėsite savo formulės rezultatą naudoti kitoje kodo vietoje, o ne rašyti tiesiai atgal į „Excel“ diapazoną. Tokiu atveju galite priskirti rezultatą kintamajam, kuris bus naudojamas vėliau jūsų kode.
1234567 | Sub AssignSumVariable ()Neryškus rezultatas kaip dvigubas'Priskirkite kintamąjįrezultatas = darbalapio funkcija.SUM (diapazonas ("G2: G7"), diapazonas ("H2: H7"))'Parodyk rezultatą„MsgBox“ „Visa diapazonų suma yra“ ir rezultatasPabaiga Sub |
Sudėkite diapazono objektą
Galite priskirti langelių grupę objektui „Range“, o tada naudoti tą diapazono objektą su Darbo lapas Funkcija objektas.
123456789 | Sub TestSumRange ()Dim rng As Range“priskirti ląstelių diapazonąNustatyti rng = Diapazonas („D2: E10“)'naudokite diapazoną formulėjeDiapazonas ("E11") = WorksheetFunction.SUM (rng)“paleiskite diapazono objektąNustatyti rng = niekoPabaiga Sub |
Sudėkite kelių diapazonų objektus
Panašiai galite apibendrinti kelis diapazono objektus.
123456789101112 | Sub TestSumMultipleRanges ()Dim rngA As DiapazonasDim rngB kaip diapazonas“priskirti ląstelių diapazonąNustatyti rngA = Diapazonas („D2: D10“)Nustatykite rngB = Diapazonas („E2: E10“)'naudokite diapazoną formulėjeDiapazonas („E11“) = WorksheetFunction.SUM (rngA, rngB)“paleiskite diapazono objektąNustatyti rngA = NiekoNustatyti rngB = niekoPabaiga Sub |
Sumokite visą stulpelį arba eilutę
Taip pat galite naudoti funkciją Sum, kad pridėtumėte visą stulpelį arba visą eilutę
Ši toliau pateikta procedūra sudės visas skaitines langelius D stulpelyje.
123 | Antroji testo suma ()Diapazonas ("F1") = WorksheetFunction.SUM (Diapazonas ("D: D")Pabaiga Sub |
Nors ši toliau pateikta procedūra sujungs visas 9 eilutės skaitines ląsteles.
123 | Antroji testo suma ()Diapazonas ("F2") = WorksheetFunction.SUM (Diapazonas ("9: 9")Pabaiga Sub |
Sum a Array
Taip pat galite naudoti „WorksheetFunction.Sum“, kad masyvo reikšmes pridėtumėte.
123456789101112 | Sub TestArray ()Dim intA (nuo 1 iki 5) kaip sveikasis skaičiusDim SumArray kaip sveikasis skaičius'užpildyti masyvąintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40“sudėkite masyvą ir parodykite rezultatą„MsgBox“ darbalapio funkcija.SUM (intA)Pabaiga Sub |
Funkcijos „SumIf“ naudojimas
Kita darbalapio funkcija, kurią galima naudoti, yra funkcija SUMIF.
123 | Antrasis testasSumIf ()Diapazonas ("D11") = WorksheetFunction.SUMIF (Diapazonas ("C2: C10"), 150, diapazonas ("D2: D10"))Pabaiga Sub |
Aukščiau aprašyta procedūra pridės diapazono (D2: D10) langelius tik tuo atveju, jei atitinkamas langelis C stulpelyje yra 150.
Sumos formulė
Kai naudojate Darbo lapasFunkcija.SUMA Norėdami pridėti sumą prie savo darbalapio diapazono, grąžinama statinė suma, o ne lanksti formulė. Tai reiškia, kad pasikeitus „Excel“ skaičiams, vertė, kurią grąžino Darbo lapas Funkcija nepasikeis.
Pirmiau pateiktame pavyzdyje procedūra „TestSum“ pridėjo diapazoną (D2: D10) ir rezultatas buvo įtrauktas į D11. Kaip matote formulės juostoje, šis rezultatas yra figūra, o ne formulė.
Jei kuri nors iš verčių pasikeičia diapazone (D2: D10), rezultatas bus rodomas D11 NE keistis.
Užuot naudoję Darbo lapasFunkcija.SUMA, galite naudoti VBA, kad pritaikytumėte sumos funkciją langeliui naudodami Formulė arba Formulė R1C1 metodus.
Formulės metodas
Formulės metodas leidžia konkrečiai nurodyti langelių diapazoną, pvz .: D2: D10, kaip parodyta žemiau.
123 | Sub TestSumFormulaDiapazonas ("D11"). Formulė = "= SUM (D2: D10)"Pabaiga Sub |
Formulės R1C1 metodas
„FromulaR1C1“ metodas yra lankstesnis tuo, kad neapsiriboja tam tikru ląstelių diapazonu. Žemiau pateiktas pavyzdys suteiks mums tą patį atsakymą, kaip ir aukščiau.
123 | Sub TestSumFormula ()Diapazonas ("D11"). FormulėR1C1 = "= SUM (R [-9] C: R [-1] C)"Pabaiga Sub |
Tačiau, kad formulė būtų lankstesnė, kodą galėtume pakeisti taip:
123 | Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SUM (R [-9] C: R [-1] C)"Pabaiga Sub |
Kad ir kur esate savo darbalapyje, formulė sudeda 8 langelius tiesiai virš jo ir įdeda atsakymą į „ActiveCell“. Funkcijos SUM diapazonas turi būti nurodytas naudojant eilutės (R) ir stulpelio (C) sintaksę.
Abu šie metodai leidžia naudoti dinamines „Excel“ formules VBA.
Dabar vietoj reikšmės D11 bus formulė.