Foglio di lavoro di Excel che calcola lentamente le formule


0

Ho un foglio di lavoro (non molto grande attualmente poco più di 6000 righe di colonne K) che per qualche ragione impiega molto tempo a ricalcolare e spesso ricalcolare e salvare. A volte ci vogliono 10-15 minuti, e altri possono richiedere fino a mezza giornata, non c'è molta coerenza nel tempo di calcolo. Le formule non sono molto complesse, ed è abbastanza pulito da quello che posso dire. I riferimenti per la maggior parte delle formule sono dati su un foglio "sorgente" all'interno dello stesso foglio di lavoro che viene estratto da SQL ed esportato in Excel utilizzando Cognos Impromptu. Ho un altro foglio che non ha questo lento problema di calcolo, ma i suoi dati vengono esportati direttamente dal sistema contenente i dati. Le formule sono le stesse e i dati sono sostanzialmente gli stessi nella struttura, ma provengono da luoghi diversi. Questa è l'unica differenza,

Non sta estraendo dati da SQL in tempo reale, sto recuperando dati da SQL (non utilizzando Excel) e incollando letteralmente valori in Excel per i calcoli lì. Per sistema intendo il programma in cui tutte le informazioni vengono inserite manualmente (non SQL che si aggiorna automaticamente dal sistema su base notturna) cioè dati demografici, addebiti, pagamenti, appuntamenti, ecc. I dati che sto inserendo in Excel è il nome del fornitore, il tipo di fornitore, il pagatore responsabile, gli addebiti, i pagamenti, le rettifiche e la data. Viene estratto e aggiornato su base giornaliera, il che è parte del problema, ogni volta che aggiungo i dati di un nuovo giorno deve essere rielaborato per includere le nuove righe.

Ecco alcune delle formule

=IF(ISERROR(SUM(IF((Source!$A$5:$A$150000='Provider Weekly-WTD'!$A8)*((Source!$K$5:$K$150000>='Provider Weekly-WTD'!B$6)*(Source!$K$5:$K$150000<('Provider Weekly-WTD'!B$6)+7)),Source!$E$5:$E$150000,""))),"-",SUM(IF((Source!$A$5:$A$150000='Provider Weekly-WTD'!$A8)*((Source!$K$5:$K$150000>='Provider Weekly-WTD'!B$6)*(Source!$K$5:$K$150000<('Provider Weekly-WTD'!B$6)+7)),Source!$E$5:$E$150000,"")))

,

=IF(ISERROR(SUM(IF(($A8=Source!$A$5:$A$150000)*(IF(Source!$K$5:$K$150000=(B$6+6),(B$6+6),MAX(IF((Source!$A$5:$A$150000=$A8)*(Source!$K$5:$K$150000>=B$6)*(Source!$K$5:$K$150000<(B$6+7)),Source!$K$5:$K$150000)))=Source!$K$5:$K$150000),Source!$I$5:$I$150000))),"-",SUM(IF(($A8=Source!$A$5:$A$150000)*(IF(Source!$K$5:$K$150000=(B$6+6),(B$6+6),MAX(IF((Source!$A$5:$A$150000=$A8)*(Source!$K$5:$K$150000>=B$6)*(Source!$K$5:$K$150000<(B$6+7)),Source!$K$5:$K$150000)))=Source!$K$5:$K$150000),Source!$I$5:$I$150000)))

,

=SUMIFS($I$5:$I$150000,$A$5:$A$150000,$A7111,$C$5:$C$150000,$C7111,$K$5:$K$150000,(MAX(IF(($A7111=$A$5:$A$150000)*($C7111=$C$5:$C$150000)*($K7111>$K$5:$K$150000),$K$5:$K$150000))))

, e

=$D7111+$E7111-$F7111+$G7111-$H7111

Dal momento che sono in qualche modo limitato a visualizzare qui i dati effettivi e posso solo visualizzare le formule, penso che sto chiedendo se le formule che sto usando sono ok e / o stanno causando il problema. Se non sono le formule, è possibile che il problema sia causato dai dati o dal formato in cui si trovano. Ad esempio, qualcuno mi ha detto che, poiché il formato della data (nelle impostazioni del formato) ha il * davanti, che sta causando il problema.


Sta estraendo i dati da SQL in tempo reale? In tal caso, caricare sul server SQL potrebbe essere il problema. Puoi spiegare cosa significa "esportato direttamente dal sistema ..."? La tua descrizione di come il foglio di calcolo è struttura è difficile da interpretare.
bwall

Risposte:


1

Non saranno le formule date la dimensione delle tue righe e il tempo di calcolo - a meno che il foglio di origine non sia effettivamente collegato ad altre fonti, cioè il tuo calcolo sta cercando di collegarsi a un'altra cartella di lavoro con l'output SQL?

Due suggerimenti per provare a ripulire il file pulendo uno spazio ridondante e una possibile corruzione

  1. Scarica e installa il componente aggiuntivo ASAP Utilities gratuito. Seleziona tutti i fogli, esegui l'utilità "Fogli" da ASAP e quindi seleziona "25 Rimuovi righe / colonne di terminazione vuote non utilizzate"
  2. Quindi seleziona tutti i fogli, fai clic con il pulsante destro del mouse sulla scheda del foglio, seleziona "Sposta o copia ..." e seleziona "Nuovo libro"

Se potessi trovare un posto per caricare la tua cartella di lavoro problematica (disinfettata se necessaria), anche questo sarebbe d'aiuto


0

Le tue formule si riferiscono a un intervallo molto più ampio di quello che stai utilizzando:

Source!$A$5:$A$150000

Quindi, la tua formula sta confrontando ogni cella in quell'intervallo con una singola cella di riferimento:

Source!$A$5:$A$150000 = 'Provider Weekly-WTD'!$A8

Riduci l'intervallo di celle a cui fanno riferimento le tue formule e dovresti trovare un miglioramento della velocità.


Grazie, ma ci ho provato. Inizialmente stavo facendo riferimento a ogni riga del foglio (tutti i 1000000+) l'ho ridotto solo alle righe necessarie ed era ancora lento. Ho optato per il 150000 perché i dati continuano a crescere ogni giorno e non voglio aggiornare continuamente le formule.
ThaddeusTG
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.