2015-06-16 6 views
8

Dire che ho questo intervallo denominato, non in A1.Fogli di lavoro Google: come ottenere una prima (ennesima) riga/colonna da un intervallo? (funzioni built-in)

 idz01 idz04 ida02 
foo  a  1  b 
bar  c  3  8 
baz  8  2  g 

Ora come posso ottenere la prima riga? E all'ennesima fila? E come la quinta colonna? Come intervallo, utilizzando le funzioni integrate.

Edit: Ennesimo consecutive: =OFFSET(ObjednavkyData, N,0, 1) ultima riga:

=OFFSET(ObjednavkyData, 
    MAX(ARRAYFORMULA(ROW(ObjednavkyData)))-ROW(ObjednavkyData), 0, 1 
) 
+0

Stai cercando di ottenere la prima colonna e la prima riga come intervallo da utilizzare con la formula che ho dato in [questa domanda] (http://stackoverflow.com/questions/30809066/google-spreadsheets-function-to-get-a-cell-from-a-range-by-row-and-col-name)? –

risposta

1

risposta parziale: (ancora aperta a quelle migliori)

1 ° fila

OFFSET(Data, 0 , 0, 1) 

Prima colonna:

È sufficiente chiamare alcune funzioni nell'intervallo a d prendono la 1a colonna.
O, se necessario:

OFFSET(Data, 0, 0, MAX(ARRAYFORMULA(ROW(Data))), 1) 

ennesima riga:
La chiave qui è che OFFSET() riempie solo a destra e verso il basso. Quindi hai solo bisogno di ritagliare queste direzioni per i suoi parametri.

OFFSET(Data, N, 0, 1); 

potrebbero essere realizzati anche alimentando la prima fila ARRAYFORMULA() e per ogni colonna (cella), ottenere cellule dell'ultima fila utilizzando INDEX(COLUMN(),ROW() + N).

colonna n:

Analogamente sopra, avete solo bisogno di ottenere il numero di righe.

OFFSET(Data, 0, N, ROWS(Data), 1); 

stavo giocando con TRANSPOSE() ma sembra che OFFSET() non digerisce bene.

0

prima riga:

=INDIRECT(COLUMN(data)&":"&COLUMN(data)) 

prima colonna:

=INDIRECT(CHAR(64+COLUMN(data))&":"&CHAR(64+COLUMN(data))) 

N'th riga:

=INDIRECT(COLUMN(data)+N&":"&COLUMN(data)+N) 

N'th Colonna:

=INDIRECT(CHAR(64+COLUMN(data)+N)&":"&CHAR(64+COLUMN(data)+N)) 

Sostituisci i dati con il tuo intervallo di dati e N con la riga/colonna di cui hai bisogno nei dati. Le righe/colonne vengono conteggiate a partire da 0. È possibile modificare tale acquisto utilizzando invece N-1.

Se si desidera ottenere la gamma attuale (A: A, 1: 1, A3: A3) al posto dei valori, solo ged liberarsi del INDIRETTA in queste formule

Spero che questo aiuti

11

Basta utilizzare la funzione INDEX:

=INDEX(NamedRange1,NRow,NColumn) 

Se si desidera che l'ultima riga e la colonna è possibile utilizzare:

=INDEX(NamedRange1,ROWS(NamedRange1),COLUMNS(NamedRange1)) 
  • INDEX è più efficiente rispetto all'alternativa OFFSET e INDIRECT che sono volatili.

Esempi:

=INDEX(ObjednavkyData,3,2) //This will return "c". 
=INDEX(ObjednavkyData,ROWS(ObjednavkyData),COLUMNS(ObjednavkyData2)) //This will return "g". 

Aggiunta:

Se si desidera ottenere l'intera riga, è possibile omettere la parte [colonna] della funzione INDEX. E se hai bisogno dell'intera colonna, ometti la parte [row].

=INDEX(ObjednavkyData,3) //This will return row 3: "bar  c  3  8". 
+3

Credo che stia cercando di tirare l'intera colonna/riga, non solo una cella. Vuole utilizzarli con l'indice come pubblicato [qui] (http://stackoverflow.com/questions/30809066/google-spreadsheets-function-to-get-a-cell-from-a-range-by-row-and -col-name) –

+0

Giusto, ho bisogno dell'intera riga o colonna. Potrei eventualmente risolvere il compito nell'altra domanda usando 'INDICE()' e 'MATCH()'. Ma per quello avrei comunque bisogno di ottenere la prima riga in qualche modo, per cercarla con LOOKUP. –

+0

Se si omette la parte [colonna] della funzione INDICE, si otterrà l'intera riga. Lo aggiungerò alla risposta. – dePatinkin

0

desidero proporre un metodo alternativo, che funziona anche con campi anonimi volatili (es uscita da altre funzioni, non solo intervalli che esiste sul foglio.) L'idea generale è quella di utilizzare FILTER() come il meccanismo delle estrazioni e costruisci un vettore di valori vero/falso come indicatore di quali file estrarre. Così, per esempio, se l'intervallo di origine è A1: D13 e voglio estrarre riga 7, vorrei scrivere

=filter(
    A1:D13, 
    {transpose(split(rept("0 ", 6), " ")); 
    1; 
    transpose(split(rept("0 ", rows(A1:D13)-7), " ")) 
    } 
) 

Come si può vedere, è anche facile generalizzare per l'estrazione di un qualsiasi numero di righe da qualsiasi luogo. In termini generali, costruire la formula in questo modo:

=filter(
    <data>, 
    {transpose(split(rept("0 ", <number rows to skip from the start>), " ")); 
    transpose(split(rept("1 ", <number of rows to extract>), " ")); 
    transpose(split(rept("0 ", <number of rows to skip until the end), " ")) 
    } 
) 
Problemi correlati