|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
Assegnare intervalli di valori a classi in Excel
Ciao a tutti.
Ho allegato un'immagine di esempio per chiarificare quello che mi serve. E' un problema che riguarda Excel...o anche Vb... Nella colonna A ho dei valori decimali che rappresentano il valore di inizio di un intervallo; nella colonna B ho il valore finale dell'intervallo. Il mio obiettivo è suddividerli all'interno di classi di appartenenza del tipo "i valori fra 0 e 1,5 sono in classe 1; i valori fra 1,6 e 3 in classe due etc". Ovviamente, ogni intervallo può appartenere a più classi. Esempio: un intervallo che va da 1 a 2 appartiene sia alla classe 1 (da 0 a 1,5) che alla classe 2 (da 1,6 a 3). Alla fine, dovrei ottenere delle classi in cui ho un valore tanto più alto, quanti maggiori sono gli intervalli che ha contenuto. Esempio: se la classe 1 ha compreso 15 intervalli (o frazioni di essi), alla fine la classe 1 avrà valore 15. Credo che la soluzione sia con formule tipo CONFRONTA, oppure SE, CERCA...ma sto facendo una gran confusione... ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
funzione RIGHE in EXCEL
Volevo solo aggiungere che sto provando varie soluzioni...
Potrebbe essere d'aiuto la funzione RIGHE: potrebbe restituirmi il numero di righe corrispondenti a tutti gli intervalli (quindi slezione di un'area di valori) che cadono nella classe x. Se metto questa funzione vicino alla classe x, ho il valore che desidero sapere per la classe. Solo...come si imposta un'espressione del genere? |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
forse con COUNTIF?
Continuo a provare...Il problema potrebbe essere visto anche in altri termini: si tratta di contare il numero di volte in cui, in un intervallo di valori, si verifica una certa situazione. In particolare, il numero di volte in cui gli intervalli di valori sono compresi in una classe.
Ho pensato di usare la formula COUNTIF, ma non riesco a farla funzionare, forse perchè per il mio obiettivo devo . Ho allegato un'immagine che spiega meglio la cosa. Perchè non va? E' la formula giusta? C'è nessuno che può aiutarmi? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
Sto cercando di ricrealo, poi nel pomeriggio ero impehnato.
Porta pazienza |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
Grazie!!
Ti mando anche un'immagine di altre formule che ho provato ma che non hanno funzionato...anche se in teoria dovrebbero dare proprio il risultato che spero. Aspetto fiduciosa! ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
![]() se devi farci vedere qualcosa su cui stai lavorando... è meglio se posti il foglio excel...o comunque i dati "copiabili" se no così dobbiamo ricreare tutto a mano.... ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
Una domanda ...
i valori forniti sono definitivi, oppure un domani diventano qualcuno in più oppure molti di più? Ps. Onestamente stavo provando con DB.CONTA.NUMERI/VALORI, però non ci sono riuscito |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
@Raffaele53 - Diventeranno molti di più....tipo 600 classi e circa 800 intervalli di valori... è un problema?
@Zuper - hai ragione....vorrei postare il foglio excel ma anche zippato e con solo un foglio di lavoro arriva a 44kb...come faccio?? |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
![]() basta che metti in un quote qualche riga significativa tipo quelle che alleghi come immagine... ma nei tag code...almeno si copia incolla facilmente ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
>>>>tipo 600 classi e circa 800 intervalli di valori
Io opterei per Access...., più facile da gestire nel futuro. In Excel vanno bene dati da 1500/3000, ma se ci sono formule pesanti, il foglio rallenta a vista d'occhio. Non conosco Visual-basic Forse avrei trovato una soluzione..... abbastanza ambigua, ma per pocchi dati dovrebbe andare. Mi manca solo un passaggio e ho finito. Se con la funzione CERCA Esempio Cerca 0,234 nelle celle precompilate risponde al valore inferiore = 0 (giusto) C'è una formula che "dica Cerca 0,639" nelle celle precompilate e risponda col valore Superiore = 1,5 In una tabella spostata, c'è un errore di base, se usi tre cifre dopo la virgola per decodificare un range. Anche nella tabella da 0 a 1,5 deve essere di tre cifre. Da 0 a 1,500 e da 1,501 a 2 |
![]() |
![]() |
![]() |
#11 | |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
@Zuper - posto pochi dati, e sotto le formule che ho provato e che per qualche motivo non vanno. La colonna "da sommare" contiene i valori da sommare nel caso di formule tipo "SOMMA.SE".
Codice:
Inizio_interv Fine_interv Classe Parte_da Fino_a Da_sommare 0,0000836 0,0001011 1 0,00000 0,00002 1 0,0000942 0,0001027 2 0,00002 0,00003 1 0,0002269 0,0002424 3 0,00003 0,00005 1 0,0002289 0,0002510 4 0,00005 0,00007 1 0,0002606 0,0002721 5 0,00007 0,00009 1 0,0002766 0,0002935 6 0,00009 0,00010 1 0,0002889 0,0002985 7 0,00010 0,00012 1 0,0003063 0,0003225 8 0,00012 0,00014 1 0,0003276 0,0003464 9 0,00014 0,00016 1 0,0003842 0,0004033 10 0,00016 0,00017 1 0,0003902 0,0004229 11 0,00017 0,00019 1 0,0004851 0,0004964 12 0,00019 0,00021 1 0,0004888 0,0004967 14 0,00021 0,00023 1 0,0004933 0,0005870 15 0,00023 0,00024 1 0,0005139 0,0005377 16 0,00024 0,00026 1 0,0005267 0,0005334 17 0,00026 0,00028 1 0,0005603 0,0005693 18 0,00028 0,00030 1 0,0005615 0,0005669 19 0,00030 0,00031 1 0,0005622 0,0005711 20 0,00031 0,00033 1 0,0005654 0,0005755 21 0,00033 0,00035 1 0,0005853 0,0005973 22 0,00035 0,00036 1 0,0006019 0,0006073 23 0,00036 0,00038 1 0,0006052 0,0006188 24 0,00038 0,00040 1 0,0006195 0,0006419 25 0,00040 0,00042 1 0,0006332 0,0006402 26 0,00042 0,00043 1 0,0006441 0,0006575 27 0,00043 0,00045 1 0,0006584 0,0006673 28 0,00045 0,00047 1 0,0007027 0,0007091 29 0,00047 0,00049 1 0,0007139 0,0007338 30 0,00049 0,00050 1 Quote:
![]() Grazie a tutti, intanto! |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
Comincio a non capire più nulla,
Hai scritto che volevi trovare il Numero delle celle che rientravano in alcuni range prefissati. Guardando la prima immagine ho capito: AB2 0,234 0,639 --->da 0 a 1,5 AB3 0,561 0,902 --->da 0 a 1,5 AB4 0,872 1,673 --->da 0 a 1,5 AB5 1,208 1,244 --->da 0 a 1,5 Tutti questi rientrano nel range da 0 a 1,5, risultato 4. Nonostante AB4 sfori nel range superiore (il quale dovrà essere riproposto nel range superiore e contegiato nuovamente). Adesso hai scritto >>>>Parte_da Fino_a Da_sommare Cosa c'è da sommare? Mi sono perso qualcosa? Puoi spiegarmi cosa sono i valori ---Classe-----0,00000 0,00002 1 1)0,0000836.........0,0001011.............1......... 0,00000 0,00002 1 Perchè se fossero i range che intendevo io, mi sembrano sbagliati. Forse ho capito, 1 finale e da sommare..... se usi Somma.Se ma già dal terzo range 0,00003 0,00005 non corrispondono più. 0,0002269 0,0002424 0,00002269 0,00002424 dovrebbero essere così (giusto?) Ultima modifica di Raffaele53 : 17-09-2009 alle 19:31. |
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
No, non ti sei perso niente!
![]() Le colonne che ho indicato sono: - Inizio_interv e Fine_interv : indicano l'inizio e la fine degli intervalli che devono essere inseriti nelle classi. - Classe: il numero della classe...non serve a niente, è solo un riferimento. - Inizia_da e Fino_A : segnano i valori di inizio e fine di ogni classe. - Da_sommare: già detto poco sopra. Grazie ancora tantissimo per il tempo dedicato. Negli altri forum non mi ha risposto nessuno e mi affido completamente a voi! ![]() |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
se hai office 2007 che dispone di + di 800 colonne
io metterei i valori delle classi in orizzontale sopra di modo che ti venga una specie di scacchiera Codice:
2 4 1 3 1 a quel punto puoi fare + facilmente i conti tipo =+IF($A3>C$1;IF($A3<C$2;1;0);IF($B3>C$1;IF($B3<C$2;1;0);0)) e in basso ad ogni colonna fai la somma degli 1 ![]() se hai le canoniche 256 colonne...devi spezzettare in vari fogli le classi ![]() sorry al momento nn ho testa di fare una macro che faccia tutto automaticamente ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] Ultima modifica di zuper : 17-09-2009 alle 21:46. |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
>>>se hai office 2007 che dispone di + di 800 colonne
Anche questa non la sapevo.... X b1ack5un Nella cella C3 metti la formula e trascinala. .....A......B......C......D 1..................0.....1,6 2.................1,5.....2 3..0,234..0,639... 4..0,561..0,902... Ritornando sempre alla 1° inmmagine (le altre sono poco visibili) Ho accennato al fatto che Tu metti sballati i range ( DA - A ) Il 1° range parte da 0 a 1,5. Il 2° range partirà da 1,501 oppure 1,6 ??? (lasciando così un vuoto da 1,5 a 1,6) Ps. L'ultima lista poi mi sembra del tutto errata. X zuper I miei complimenti più sinceri. =se($A3>C$1;se($A3<C$2;1;0);se($B3>C$1;se($B3<C$2;1;0);0)) Mi mancava la seconda parte dove bisognava eccedere nel range superiore (pertanto AB4 rientra nel 1° e 2° range). Purtroppo devo far notare un anomalia riguardante la stringa AB8. (aspettando una risposta da b1ack5un.... ),desidero chiedere subito scusa se ho interpretato male, perchè non è mia intenzione criticare la stringa e le persone. Hai aggiunto una parte che sfora nel range superiore, forse bisognerebbe aggiungerne un'altra che sfori nel range inferiore. Cerco di spiegarmi meglio con l'esempio di AB8 che non rientra nel range che va da da 2,1 a 2,5 oppure 2,001 a 2,5 Ciao e scusami |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
ehehe effettivamente anche io ho trovato qualche incongruenza tra i dati postati
e ho buttato li un'idea su come risolverla...nn era sicuramente completa ma secondo me è un buon punto di partenza (che modesto ![]() x raffa nn ho capito cosa intendi con questo: "Hai aggiunto una parte che sfora nel range superiore, forse bisognerebbe aggiungerne un'altra che sfori nel range inferiore." ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
zuper, non importa...
Perchè se è come penso io, ci potrebbero essere valori che superano di 2/3 range sopra e 2/3 range sotto, pertanto la formula potrebbe essere infinita.Con Access questo quesito sono riuscito a risolverlo. Per cortesia, mi sapresti dire se: A1=0 B1=1,5 A2=1,501 B2=2 A3= 0,234 A4= 0,639 B3= =cerca(A3;A1:A2) risultato 0 (giusto) B4= =cerca(A4;B1:B2) risultato #N/D (giusto,perchè riporta il valore più piccolo che non esiste) C'è un modo da fargli riportare il valore superiore, cioè la cella superiore B1 = 1,5 Ultima modifica di Raffaele53 : 19-09-2009 alle 12:40. |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1499
|
Dato che era diventata una sfida personale, concludo la questione anche se non ci sono più risposte da parte dell'utente.
A)Usando le 800 colonne di office 2007 e creando una tabella come suggerito da zuper. B)Inserendo due colonne con: =CERCA(B3;A$18:A$22) =CERCA.VERT(C3;A$18:B$22;2) Aggiungendo in basso, oppure a fianco (importante sulle colonne A:B i range) C) =SE($I3>=D$1;SE($I3<=D$2;$A3;"");SE($J3>=D$1;SE($J3<=D$2;$A3;SE($B3>D$1;$A3;SE($C3<D$2;"";$A3)));"")) Ps. Per questa problematica (meglio Access), provo a inserire il foglio (mai fatto). PPs. Naturalmente se si modificano i range, bisogna fare un copia/incolla speciale\trasponi Ultima modifica di Raffaele53 : 20-09-2009 alle 11:43. |
![]() |
![]() |
![]() |
#19 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
Ciao, non sono sparita...ero fuori per il weekend e non avevo internet
![]() Ho letto tutti i vostri suggerimenti...wow, grazie mille! Adesso li provo subito, e ho Office 2007, quindi che bello...non mi farò problemi sul numero di colonne! Provo e torno. |
![]() |
![]() |
![]() |
#20 |
Member
Iscritto dal: Dec 2008
Messaggi: 40
|
Finito!
Ecco la formula che ho usato: =IF($A$2>=D2;IF($A$2<=E2;1;0);IF($B$2<=E2;IF($B$2>=D2;1;0);IF($B$2>=E2;1;0))) In cui: - colonna A: inizio intervallo - colonna B: fine intervallo - colonna D: inizio classe - colonna E: fine classe Effettivamente avevo scritto valori che potevano confondere circa l'inizio e la fine delle classi. Ho usato la formula di zuper e la formula (C) di Raffaele53. Grazie ad entrambi, senza di voi non ne sarei mai venuta a capo ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:49.