2013-09-26 12 views
25

Okay, quindi ho un modulo Google che scarica informazioni in un foglio di calcolo. Su ogni linea ho bisogno di fare un semplice calcolo fatto. Il problema è che non riesco a capire come farlo ripetere una formula su ogni nuova riga quando vengono aggiunte nuove linee.Rendi la formula di Google Foglio elettronico ripetuta all'infinito

Sì, so come utilizzare l'handle di riempimento per copiare le formule e cosa no, ma voglio aggiungere automaticamente la formula anziché copiarlo manualmente.

Per esempio, questo viene utilizzato per monitorare il tempo per cui v'è una cella per In Time ed una cella per Out su ogni riga. Voglio avere una colonna denominata Tempo trascorso che sottrarrà il loro tempo dal tempo esterno per determinare quanto tempo hanno trascorso. Ma dal momento che ci sono un numero infinito di righe non è pratico per me entrare e copiare la formula.

Se qualcuno ha qualche idea lo apprezzerei molto. Mi sono guardato intorno per anni e tutto quello che potrò mai trovare è che la gente dice di usare la maniglia di riempimento per copiare manualmente le formule che non è quello che voglio.

risposta

45

Diciamo che il In Time cellule sono nella colonna A, e Out Time cellule sono nella colonna B, e si desidera Tempo trascorso di essere in colonna C. Put questa formula nella cella C2 (supponendo A1, B1, C1 e contenere intestazioni, non dati):

=ARRAYFORMULA(B2:B - A2:A) 

la funzione ARRAYFORMULA istruisce il foglio di iterare formula contenuta oltre gli intervalli dati e un riferimento senza un numero finale come B2:B fa riferimento a un intervallo che contiene tutte le righe rimanenti nel foglio di calcolo.

+2

Grazie così tanto che è esattamente quello che mi serviva. L'ho cercato per mesi e non sono mai riuscito a trovare una risposta diretta. Ancora una domanda dal momento che la sintassi della formula di array mi fa ancora saltare un po 'su come implementare un'istruzione if in quel punto.Per esempio vorrei qualcosa di simile a IF (B2 = "?", "?", B2-A2) – slister

+3

Non importa se l'ho capito = ARRAYFORMULA (IF (F2: F = "?", "?", F2: F - E2: E)) Grazie mille per avermi indicato nella giusta direzione. – slister

+0

@Brionius come posso applicare = formula HTTPResponse per l'intera colonna per vecchi e nuovi dati? arrayformula non funzionerà per = HTTPResponse! . non voglio copiare la formula manualmente per l'intera colonna! – user1788736

5

Se per qualche motivo si riesce a trovare arrayformula difficile da utilizzare nella propria situazione, un'opzione alternativa consiste nel creare un mirror della tabella su un altro foglio utilizzando una query in cui sono scritte le formule.

E.g. se si dispone di numeri in colonne A e B e una formula per aggiungere insieme:

=query(Data!A:B, "select A, B, A + B") 

Il vantaggio di questo approccio è che spesso si vuole fare aggregazione e riepilogo sui vostri dati del modulo, e si può uccidere due piccioni con una fava facendolo nella stessa query che usi per applicare le formule.

Menzionerò un altro trucco che è stato utile in passato quando la sintassi delle query di Google presenta una lacuna nella funzionalità. È possibile applicare una formula array ai dati prima di passarli alla funzione query, come nell'esempio seguente, che ha un output equivalente alla query precedente.

=query({Data!A:B, arrayformula(Data!A:A+Data!B:B)}, 
    "select Col1, Col2, Col3") 

Si noti come le colonne non sono più indicati con la lettera, ma per Col1, Col2, ecc

+0

Grazie per il trucco della query @Tmdean che è utile sapere. – slister

Problemi correlati