2011-10-28 11 views
5

Ho letto altrove su Stack Overflow che le domande di Excel sono accettabili qui, quindi per favore non arrabbiarti :) Se dovrebbero essere altrove, fammelo sapere ..Espansione di una tabella di frequenze in Excel in una singola colonna

Sono frustrato, perché sono abbastanza sicuro di sapere come farlo.

Immaginate la seguente tabella:

Frequency  Object 
3    A 
2    B 
4    C 

In una terza colonna, voglio Excel per scrivere:

A 
A 
A 
B 
B 
C 
C 
C 
C 

(3 di perché la frequenza di A = 3 A)

I' Sono piuttosto sicuro che questo può essere fatto con una singola formula copiata nella terza colonna, ma non riesco a ricordare come. Eventuali suggerimenti?

+0

# 1 Poiché la tua domanda riguarda una formula, penso che sia accettabile qui. Qualsiasi domanda più generalizzata (ad esempio come creare un grafico) dovrebbe andare a superuser.com. Ma questa è solo la mia opinione. # 2 Perché hai openoffice taggato in questa domanda? Questo è un software completamente diverso. – PowerUser

+0

Hai un numero limitato di oggetti? cioè è solo A-C o è più simile ad A-J o ad un numero sconosciuto? – PowerUser

risposta

1

Nella prima cella della colonna output desiderato (E1 in questo esempio), inserite

=B1 

Dove B1 è il indirizzo del primo oggetto. Nella cella sottostante (E2, qui), immettere

=IF(COUNTIF(E$1:E1,E1)=INDEX($A$1:$A$3,MATCH(E1,$B$1:$B$3,0)), 
INDEX($B$1:$B$3,MATCH(E1,$B$1:$B$3,0)+1), 
E1) 

E riempire per quanto necessario.

+0

Ciao, grazie per la tua risposta. Mi chiedo perché la colonna E sia coinvolta in questa formula. Suppongo che A e B siano le colonne con i dati e C è la colonna in cui verrà aggiunta la terza colonna. – Andrew

+0

Oh scusa. La colonna E è dove stavo inserendo la formula. Io modificherò per aggiungere queste informazioni. – Excellll

+0

@Excellll, Questa è una formula impressionante. Penso che avrei fatto ricorso a una macro prima di provare a capirlo. Bello! – Stewbob

1

Supponendo di avere un piccolo numero finito di oggetti, come nel tuo esempio, provate questo:

  1. In un foglio bianco, mettere il vostro tavolo esempio in alto a sinistra. Così cella A2 = 3, B2 = "A", A3 = 2, ecc
  2. In D2, immettere "A" (questo è solo per ottenere la formula avviato)
  3. In D3, immettere questa formula:

    IF(COUNTIF($D$2:D6,$B$2)<$A$2,$B$2, 
    IF(COUNTIF($D$2:D6,$B$3)<$A$3,$B$3, 
    IF(COUNTIF($D$2:D6,$B$4)<$A$4,$B$4))) 
    
  4. Fill questa formula verso il basso (cioè copiare & incolla) di circa 10 righe e vedrete tutto riempire di conseguenza.

Cosa fa, chiedi? Innanzitutto, conta il numero di occorrenze di "A" nelle celle precedenti della colonna D e lo confronta con la frequenza. Se meno, si entra in un'altra A. Quindi questo processo viene ripetuto per B e C.

+0

Grazie per la risposta. Possiedo un numero potenzialmente elevato di oggetti finiti. La formula che hai fornito è stata tagliata? Non sembrano esserci abbastanza parentesi di chiusura. – Andrew

+0

Grazie. L'ho riparato. Poiché questa formula richiede l'inserimento di una riga separata per ciascun oggetto, potrebbe non funzionare nel tuo caso. – PowerUser

2

Mi è piaciuta l'eleganza della (1) formula, ma funzionerà solo se non hai oggetti ripetuti (dati).

Questo funziona sempre, finchè non avete un numerica, spettacolo diverso da zero, il valore d'E2 valori Freq in E3:E6 e Obj in D3:D6, formula a partire dal P3

=LOOKUP(ROWS(P$3:P3)-1;SUMIF(INDIRECT("E2:E"&ROW($E$2:$E$6));">0");$D$3:$D$6) 

o (e, in questo caso, si può avere tutto nella E2)

=INDEX($D$3:$D$6;IF(ROWS(L$3:L3)<=$E$3;1;1+MATCH(ROWS(L$3:L3)-1;SUMIF(INDIRECT("E3:E"&ROW($E$3:$E$6));">0")))) 

Ctrl + Maiusc + Invio in P3 e copiare giù

01.235.

CR

Problemi correlati