/ / SUMIFS zdrojový kód pre excel 2003 a schopnosť vypočítať na stĺpcoch - excel, excel-vba, vba

SUMIFS zdrojový kód pre Excel 2003 a schopnosť vypočítať na stĺpcoch - excel, excel-vba, vba

Hľadáme originál? zdrojový kód pre SUMIFS, ktorý sa má použiť v programe Excel (na roky 2003 a 2007.) Preto:

  • 2003 doest podporujú metódu SUMIFS
  • Keď máme SUMIFS, nemôžeme použiť vzorce "okolo" stĺpcov (napríklad YEAR ())

Napríklad chceme vypočítať ODPOVEDEktoré zodpovedajú hodnote YEAR dátumu v bunke A1 s hodnotami dátumu v rozsahu L: L. Teraz to nefunguje, pretože nemôžeme použiť YEAR (L: L), a preto musíme urobiť ďalší stĺpec M: M s hodnotami YEAR z L: L

Potrebujeme preto zdroj, aby sme mohli kód ďalej inovovať

= SUMIFY (ODPOVEDE; L: L; "=" & ROK (A1)) <= Toto funguje

= SUMIFY (ODPOVEDE; ROK (L: L); "=" & YEAR (A1)) <= To doesnt

Veľká vďaka

S odkazom na tieto otázky: Nahradenie SUMIFS v programe Excel 2003 Kód VBA pre SUMIFS?

odpovede:

2 pre odpoveď č. 1

Pochybujem, že nájdeš originálny kód, čo je, ako si predstavujem, C ++ a časť interných programov programu Excel. Ak to bude správne, potom to nebude moc pomáhať, aj keď vám to Microsoft dal!

Vo všeobecnosti odporúčam použitie =SUMIF(), =SUMIFS() a ďalšie funkcie, ktoré definujú reťazecpodmienka pre testovanie: okrem iného sa obávam, že budú pomalé, pretože môj najlepší odhad je, že vnútorne vytvárajú reťazec na hodnotenie pre každú hodnotu. V XL2007 (všetko, čo mám k dispozícii hneď teraz), sa to ukáže ako nepravdepodobné (pozri komentáre nižšie).

Vo všeobecnosti som oveľa spokojnejší s funkciami poľa, čo by malo fungovať v programe Excel 2003 a 2007:

=SUMPRODUCT(--(YEAR(L:L)=YEAR(A1)),ANSWERS)

To má rovnakú odpoveď:

{=SUM(IF(YEAR(L:L)=YEAR(A1),ANSWERS,0))}

V druhom prípade ste zadali vzorec bez kučeravých rovnačiek ({ & }) a potvrďte pomocou ovládacieho prvku Control + Shift + Enter, aby ste programu Excel povedali, že je to vzorec poľa.

V prvom príklade vytvoríme zoznam booleovských výsledkov s YEAR(L:L)=YEAR(A1) a premeniť ho na pole 1s a 0s pomocou dvojitého negatívneho. potom SUMPRODUCT stará sa o zvyšok. Táto verzia to vyžaduje ANSWERS má rovnaký rozmer ako L:L, to znamená, že by mal byť celý stĺpec (alebo rozsah v L by mali byť obmedzené vo veľkosti).

V druhom sa program Excel prechádza každou položkou L:L, Ak sa jeho rok zhoduje s hodnotou A1, potom zodpovedajúci ANSWERS hodnota bude použitá, inak nula. Tento vzorec sa zdá byť tolerantnejší voči rozmerovým rozdielom, ale stále by som mal byť opatrný.