Gama de import a foii de calcul Google Spreadsheet #REF! Eroare (aleatoriu) (Programare, Google Sheets)

Chris Cirefice a intrebat.

Această problemă a fost persistentă de ceva timp, se întâmplă doar din când în când la momente aleatorii, nimic nu se schimbă. De asemenea, nu știu cum să reproduc problema, dar voi da o explicație detaliată a ceea ce se întâmplă.

În mod normal importRange funcția funcționează foarte bine și arată cam așa cum urmează:

Tasta Spreadsheet este tastată corect – Folosesc această strategie în Google Spreadsheets de ceva vreme.

Din când în când, Google Spreadsheets pare să se strice, sau cel puțin se întrerupe importRange funcția o face… și produce ceva de genul următor:

Google părea să se blocheze uneori astăzi, moment în care s-a întâmplat acest lucru. Am încercat să ajustez importRange parametrii la !X1:X, , !X2:X5, , schimbarea titlului foii care este importată etc.

În trecut, schimbarea de la !X:X la !X1:X a reparat unele coloane, dar nu întotdeauna toate. Singura soluție infailibilă pentru a rezolva acest lucru, pe care am găsit-o, este recrearea ambelor foi de calcul. Deoarece back-end-ul (cel care este importat) devine în cele din urmă un raport, aș dori să îl scutesc pe șeful meu de efortul suplimentar de a face referire la mai multe foi de calcul și aș prefera să rezolv această problemă și să termin cu ea.

Știe cineva care este cauza potențială a acestei erori? Uneori se remediază de la sine, alteori nu. Se întâmplă la întâmplare și numai la anumite foi de calcul (am un set de aproximativ 8 foi de calcul care utilizează toate importRange, și nu sunt afectate mai mult de 2 în același timp). Așa că, sincer, nu am nici o idee de unde vine asta.

Notă secundară: Google, în general, a fost un pic lipsit de reacție astăzi în ceea ce privește toate serviciile sale – serviciul de e-mail App Engine al universității mele a fost oprit timp de aproximativ o jumătate de oră. Ar putea o limitare a resurselor/atacatori de rețea să cauzeze acest tip de comportament în Spreadsheets?

Actualizare: Am încercat să import în aceeași foaie de calcul date de la un altă foaie de calcul (de exemplu, am dat importRange o altă cheie de foaie de calcul). Deși cheia și intervalul sunt valabile dacă sunt importate într-o diferit foaie de calcul, în originalul meu (cel plin de #REF!), intervalul respectiv nu este importat corect. Acest lucru mă face să cred că această eroare se poate aplica doar la o singură foaie de calcul, unde orice încercare de a importRange din orice altă sursă este nu funcțională.

Comentarii

  • Am văzut și eu un astfel de comportament, cred că funcția importRange este pur și simplu stricată. Eu folosesc Apps Script pentru a o înlocui aproape peste tot. Oricum, de ce ai etichetat această întrebare ca apps-script? Nu pare să aibă legătură. Sau cauți și tu o soluție de înlocuire a apps-script ? 🙂 –  > Por Henrique G. Abreu.
  • Ei bine, ideea este de a avea un interval non-editabil care este extras dintr-o foaie de calcul de resurse. Pot face același lucru cu intervale protejate, dar vreau, de asemenea, ca valorile să se actualizeze dacă valorile foii de calcul originale sunt actualizate. De asemenea, am etichetat acest lucru ca GAS, deoarece știu că anumite persoane care urmăresc această etichetă au folosit importrange înainte și au experiență cu scripturi în jurul eșecurilor sale. Se pare că importrange este pur și simplu stricat, și a fost de ceva timp. Vedeți această întrebare. –  > Por Chris Cirefice.
  • Întrebarea nu este legată direct de google-apps-script, așa că această etichetă ar trebui eliminată. –  > Por Rubén.
  • Aceasta este încă o problemă astăzi. Păcat, pentru că este un lucru grozav –  > Por learn2day.
11 răspunsuri
Tim

Acest lucru este un pic mai târziu, dar am dat peste el într-o căutare, așa că ar putea ajuta pe altcineva – încercați ceva de genul acesta:

=IFERROR(ImportRange(SpreadSheet_GUID,"Bookings!P:P"), 
 IFERROR(ImportRange(SpreadSheet_GUID,"Bookings!P:p"), 
 IFERROR(ImportRange(SpreadSheet_GUID,"Bookings!p:P"), 
         ImportRange(SpreadSheet_GUID,"Bookings!p:p"))))

Practic, ideea este de a forța Google să recalculeze folosind variații ale adresei originale (litere de coloană majuscule / minuscule).

Comentarii

  • Mulțumesc Tim! Voi ține cont de acest lucru atunci când eroarea va apărea data viitoare – până atunci, ar fi imposibil de determinat dacă a avut succes sau nu. –  > Por Chris Cirefice.
  • Minunat răspuns – dar nu funcționează pe o foaie încăpățânată a mea. Foaia este publică, iar funcția de import interval funcționează atunci când este utilizată în alte foi, deci este cu siguranță aceeași eroare. În mod ciudat, nicio reîmprospătare nu recuperează datele. Scopul acestui comentariu este de a spune „și eu” mai mult decât orice altceva. –  > Por Zediiiii.
SanzM

Problemele cu funcția IMPORTRANGE() au fost oarecum o problemă continuă. Au existat mai multe bug-uri de-a lungul anilor și depinde de Google să găsească o soluție stabilă astfel încât să funcționeze așa cum a fost concepută.

Până atunci, acest lucru v-ar putea ajuta:

În loc să editați celula, să creați o nouă foaie de calcul sau să faceți orice altceva pentru ca foaia să reintenteze funcția (aproape ca și cum ați juca la loto), puteți forța foile Google să reintenteze automat funcția atunci când nu reușește să se încarce:

Înfășurați funcția IMPORTRANGE() care cauzează probleme cu o funcție IFERROR(). În acest fel, foaia încearcă importul și, numai dacă nu reușește, îl încearcă din nou. Funcția poate fi imbricata pentru a încerca de mai multe ori la rând.

Puteți adăuga intervale numite la datele sursă (faceți clic dreapta pe sursă>define-named-range) pentru a facilita. De exemplu, puteți crea 3 intervale denumite diferite pentru intervalul „J:J”. Numiți-le „J”, „Ja” și „Jay”, apoi apelați la funcția IFERROR() în foaia în care doriți să importați:

=IFERROR( IMPORTRANGE( "SheetID","J" ), IFERROR( IMPORTRANGE( "SheetID","Ja" ), IFERROR( IMPORTRANGE( "SheetID","Jay" ), IFERROR( IMPORTRANGE( "SheetID", "'TabName'!J:J" ), IFERROR( IMPORTRANGE( "SheetID", "'TabName'!j:j" )))))

Această formulă va încerca importul și îl va livra în cazul în care reușește, iar dacă nu, va încerca din nou de 5 ori la rând în mod automat, ceea ce nu garantează că veți reuși, dar dacă aveți o șansă de 50% de succes cu importurile dvs., dacă aninați 5 la rând ar trebui să vă ofere o șansă de 96%, ceea ce este mult mai bine. Experiența mea personală a fost că nu a eșuat de când am făcut cuibul IFERROR().

Sper că vă ajută.

bojanhor

Am avut probleme similare, și s-au rezolvat prin faptul că NU am folosit link-uri publice către foile de calcul. am observat că link-urile sunt diferite pentru partajarea publică și cele copiate din bara de adrese în timp ce foaia si a fost deschisă.

De asemenea, am observat unele dificultăți la deschiderea foilor de calcul partajate din alte conturi Google. A trebuit să permit din nou accesul pentru unele foi de calcul pe care le importam.

Îmi cer scuze pentru engleza mea.

Sych

Asta se întâmplă, într-adevăr, în cazul meu pur și simplu Ctrl+X, așteptând o secundă și apoi lipind formula înapoi face ca motorul Sheets să refacă importul și apoi reușește să importe. În cazul în care nu puteți face această procedură manual, ar trebui să folosiți soluția lui Tim.

Reuben

Am avut aceeași problemă și am găsit o soluție!

  1. Vă rugăm să reduceți dimensiunea fișierului sursă

  2. Pentru a-l reduce, împărțiți-l și aveți din nou intervalul de import la care se face referire

Acum veți putea vedea intervalul importat!

Dacă credeți că situația de mai sus nu este cea de mai sus, șansele ar putea fi

  1. Celula dvs. este ocupată, așa că eliminați toată formatarea și ștergeți toate celulele înainte de a importa intervalul.

  2. Tot nu funcționează? Lasă-l pe Dumnezeu să te ajute!

Panda

Am încercat să adaug :

if(ISERROR(importrange... 

și funcționează.

Nu înseamnă că eroarea dispare, dar când se întâmplă, trebuie doar să reîncarci foaia și să aștepți un timp și să o lași să se actualizeze singură.

Este mult mai practic decât să schimbi manual litera mare în literă mică.

Ana D.

Iată soluția simplă pe care am găsit-o pentru această eroare:

Fac un Find-and-Replace („caut în formule”) pentru „=” oriunde am eroarea de importrange (=REF!) (sau doar pentru toată foaia) și înlocuiesc-toate cu un „#” pentru ca totul să fie text și nu formulă. Apoi mai fac o altă căutare și înlocuire pe aceeași zonă și înlocuiesc-toate „#” cu „=” din nou. Acest lucru rezolvă problema în mod constant.

Sergio Portinari

Am găsit această soluție, funcționează bine pentru mine:

În ambele foi de calcul inserați o ecuație =now() într-o celulă aleatorie, să zicem Z1În ambele foi de calcul inserați o funcție =importrange() care face referire la funcția now a celeilalte foi de calcul. intrați în setările foii de calcul și alegeți să recalculați la fiecare minut. am încercat o mulțime de alte sugestii, inclusiv utilizarea funcției =now(), trucul now URL din acest fir de discuție sau Apps Script pentru a insera text aleatoriu pe un interval stabilit, dar nimic nu ar forța importrange să se actualizeze, cu excepția unei editări manuale a foii sursă.

https://webapps.stackexchange.com/questions/60324/how-can-i-get-google-sheets-to-auto-update-a-reference-to-another-sheet

Anita Bowers

Am reușit să remediez eroarea =REF! folosind Editare > Găsire și înlocuire > Găsire „=” Înlocuire cu „#” > Căutare interval selectat > Căutare și în interiorul formulelor > Găsire > Gata. Eroarea s-a corectat fără a iniția efectiv comanda Replace.

Nap

doar pentru a vă împărtăși cum am rezolvat această eroare. la verificarea formulelor mele, am o referință circulară, ceea ce m-a făcut să întâlnesc această eroare internă ImportRange. Când am curățat formulele mele pentru a elimina aceste referințe circulare, a funcționat din nou. 🙂

Comentarii

  • Acest lucru nu oferă un răspuns la întrebare. Odată ce veți avea suficientă reputație, veți putea comenta la orice mesaj; în schimb, oferiți răspunsuri conform ghidului –  > Por Anna.
Ильнар Насибуллин

Am avut aceeași problemă și am rezolvat-o folosind =IF(ISERROR(A1);IMPORTRANGE();IMPORTRANGE()) în celula în care se afla anterior IMPORTRANGE și activând calculul iterativ în setările de locație & calcul din foaia de calcul. Sper că va ajuta pe cineva