God kväll på er,
Joker, nu har jag gjort en "Excel2010-vänlig" version åt dig så länge du kör 64-bitars Excel, annars kommer du nästan garanterat få slut på minne med ett så stort dataset som 700K rader och 105 kolumner. Bara det blir ju över 70 miljoner celler. 32-bitars Excel har en minnesbegränsning i teorin på 2GB per arbetsbok. Oracle har dock påvisat att redan efter en minnesanvändning på drygt 700 MB kan 32-bitars Excel börja uppträda oförutsägbart.
(docs.oracle.com/applications/smartview/710/SVICG/memory_usage_considerations_for_smart_view_with_excel_32-bit_and_64-bit.htm)
Jag har iallafall vidareutvecklat mitt förslag till "version 2.0". Nu behöver man inga hjälpkolumner och det finns dessutom inte en enda cellreferens i Excels adressformat (A1:B2), alla cellreferenser använder namngivna adressområden och fält för att förhoppningsvis optimera för stora dataset.
Så här ser version 2.0 ut.
Tabellreferenser
Tabell: tbTalserie
Tabell rubrikrad: tbTalserie[#Rubriker]
Kolumn A: [A]
Kolumn B: [B]
Kolumn C: [C]
Namngivna områden
Cell E2: RadA
Cell E3: RadB
Cell E4: RadC
Cell E7: Grans
Formler rubriker
A1: =SUMMA(tbTalserie[A])%
B1: =SUMMA(tbTalserie[B])%
C1: =SUMMA(tbTalserie[C])%
F1: ="Poster totalt: "&ANTAL(tbTalserie[A])*KOLUMNER(tbTalserie)
Formler hämta värden
A2: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[A];RadA))
A3: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[A];RadB))
A4: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[A];RadC))
B2: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[B];RadA))
B3: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[B];RadB))
B4: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[B];RadC))
C2: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[C];RadA))
C3: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[C];RadB))
C4: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[C];RadC))
Formler hitta cellrader
D2: =OM(ELLER(Grans<=0;Grans>100);"";"A"&RadA+RAD(tbTalserie[[#Rubriker];[A]]))
D3: =OM(ELLER(Grans<=0;Grans>100);"";"B"&RadB+RAD(tbTalserie[[#Rubriker];[B]]))
D4: =OM(ELLER(Grans<=0;Grans>100);"";"C"&RadC+RAD(tbTalserie[[#Rubriker];[C]]))
E2: =OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[A];;;RAD(tbTalserie[A])-RAD(tbTalserie[[#Rubriker];[A]])))/SUMMA(tbTalserie[A])%>=Grans;(RAD(tbTalserie[A]))-RAD(tbTalserie[#Rubriker]));1))
E3: =OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[B];;;RAD(tbTalserie[B])-RAD(tbTalserie[[#Rubriker];[B]])))/SUMMA(tbTalserie[B])%>=Grans;(RAD(tbTalserie[B]))-RAD(tbTalserie[#Rubriker]));1))
E4: =OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[C];;;RAD(tbTalserie[C])-RAD(tbTalserie[[#Rubriker];[C]])))/SUMMA(tbTalserie[C])%>=Grans;(RAD(tbTalserie[C]))-RAD(tbTalserie[#Rubriker]));1))
Formler räkna poster
F2: =ANTAL(FÖRSKJUTNING(tbTalserie[A];;;RadA))&" / "&ANTAL(tbTalserie[A])
F3: =ANTAL(FÖRSKJUTNING(tbTalserie[B];;;RadB))&" / "&ANTAL(tbTalserie[B])
F4: =ANTAL(FÖRSKJUTNING(tbTalserie[C];;;RadC))&" / "&ANTAL(tbTalserie[C])
Det är alltihop på ett enda arbetsblad i mindre än 25 formler.
Nu är det bara att testköra om du vill och se om det fungerar bättre utan miljontals hjälpceller och externa referenser.
Lycka till!