Condividi:        

conta valori in range parziali

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

conta valori in range parziali

Postdi miko » 10/03/13 17:37

buona domenica a tutti.
sto cercando di realizzare questo nuovo progetto non alla mia portata, più semplice a farsi che a spiegarsi.
mediante una macro trova, già realizzata, ho trovato alcuni valori, 101,102,103,...110 nel range "G3:L" di foglio1;
per ciascuno di questi valori ho determinato il numero di riga di foglio1 in cui tale valore si trova.
tali numeri di riga sono inseriti in 10 colonne del foglioX, dalla B alla J, a partire dalla riga 3;
quindi la colonna B contiene i numeri di riga in cui si trova il numero 101 nel foglio1;
la colonna C contiene i numeri di riga in cui si trova il numero 102 nel foglio1;
e cosi via.
La lunghezza, cioè le righe, di ogni colonna non è nota e varia da colonna a colonna.
ogni colonna, non contiene valori nulli o celle vuote e neanche numeri ripetuti.
Fin qui è stato fatto tutto.
Ora dovrei fare questo sviluppo.
nel foglio1 ho un range "G3:L" la cui ultima riga non è nota, dal momento che il range aumenta nel numero di righe.
supponiamo di considerare la colonna B di foglioX, (colonna che contiene i numeri di riga del numero 101), i cui valori sono:

B3 = 5 ' <<<<< prima riga-cella utile di colonna B
B4 = 10
B5 = 18
...
B19 = 29
B20 = 30 ' <<<< ultima riga-cella utila di colonna B

consideriamo ora B3 = 5 e B4 = 10;
dati questi 2 valori devo ora contare tutti i numeri del foglio1 che si trovano nel range ("G & PR :L & UR")
dove PR ed UR sono determinati come segue:
PR = PRIMARIGA = B3 +1 = 5 + 1 = 6
UR = ULTIMARIGA = B4 = 10
cioè PR è il primo valore di colonna B del foglioX, aumentato di una unità;
mentre UR è il secondo valore di colonna B del foglioX.
quindi il range di foglio1 in cui contare è "G6:L10";
dal conteggio devo escludere il numero 101 che si trova solo in riga 10, precisamente in una cella del range "G10:L10".
Il risultato di questo conteggio deve essere riportato nel foglioB, in quanto riferito alla colonna B,
che per una migliore visualizzazione, onde evitare di scorrere il foglio, ho impostato come in fig.

Immagine

(se per la struttura della macro l'impostazione di foglioB crea complicazioni si può modificare il foglioB.)
successivamente ripeto il ciclo "conta" di tutti i numeri nel foglio1,
considerando come riga iniziale un nuovo PR, uguale al secondo valore di colonna B (di foglioX) + 1,
quindi ora PR = B4 + 1 = 10 +1=11
mentre UR sarà uguale al terzo valore di colonna B di foglioX,
quindi UR = B5 = 18;
in pratica nel secondo ciclo "conta" il range di foglio1 in cui contare è diventato "G11:L18".
dal conteggio escludo il numero 101 che si trova solo in riga 18, precisamente in una cella del range "G18:L18".
anche il risultato di questo secondo conteggio sarà inserito in foglioB.
ripetiamo il ciclo "conta" modificando i valori di PR ed UR fino alla fine della colonnaB;
in questo esempio alla fine avremo PR = B19 + 1 = 29 + 1 = 30, ed UR = B20 = 30, per cui il ciclo "conta"
interesserà solo la riga 30 del foglio1, essendo il range di ricerca ora uguale a "G30:L30".
quando UR è uguale all'ultimo valore della colonna B di foglioX,
il conteggio relativo alla colonna B di foglioX è terminato.
passo a considerare la colonna C di foglioX, che contiene i numeri di riga del foglio1 in cui si trova il numero 102,
e ripeto come in precedenza il ciclo conta nei range "G & PR :L & UR" di foglio1
considerando come PR ed UR i valori di colonna C, riportando i risultati di ciascun conteggio nel foglioC.
ripeto lo stesso tipo di calcolo fino a considerare la colonna J del foglioX che contiene i numeri di riga del foglio1 in cui si trova
il numero 110 e riporto il conteggio nel foglioJ.
nella macro devo prevedere una elevata velocità di esecuzione dato il numero crescente di valori da contare;
inoltre devo considerare che se attualmente il conteggio avviene ad esempio su 100 righe del foglio1,
quando le righe saranno 150 sarà sufficiente aggiungere il conteggio dalla 101 alla 150 al risultato ottenuto in precedenza.
mi rendo conto della apparente complessità del calcolo, ma vedrete che una volta compresa questa mia fantasia risulterà banale tanto che chiunque, tranne me, potrebbe realizzare una macro per tale calcolo.
grazie, anche per la lettura del topic.
saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: conta valori in range parziali

Postdi Anthony47 » 10/03/13 23:01

sto cercando di realizzare questo nuovo progetto non alla mia portata, più semplice a farsi che a spiegarsi
Insomma tu fai il lavoro difficile e a noi chiedi quello facile facile? :D :D
Come minimo e' un errore di comunicazione...

Comunque a confermare la difficolta' di spiegazione c' e' che non ho capito se la prima conta riguarda il primo numero 101 contato nell' intervallo G6:L10 (per stare al tuo esempio; comunque fara' 1 che poi diventa 0 per ulteriore specifica); poi la seconda conta riguarda il 102 da contare nell' intervallo G11:L18; e cosi' fino alla conta del 110.
Se cosi' fosse, allora sul foglio B in D3 potresti provare la formula
Codice: Seleziona tutto
=CONTA.SE(SCARTO(Foglio1!$G$1;X!B1;0;MAX(1;X!B2-X!B1);6);B3)-1

Immaginando che 102, 103, ... 110 siano sottostanti al 101 di B3 (quindi un layout diverso da quello che hai preparato) puoi copiare la formula verso il basso per avere gli altri conteggi.
Il "-1" serve a sottrarre la presenza del 101 nell' intervallo, come ho capito che va fatto; tuttavia questo ti dara' risultato negativo se per caso il numero conteggiato non esiste in quell' intervallo.
Tuttavia "se fosse così" allora la cosa non avrebbe senso, perche' in questo modo fai solo 10 conteggi, mentre le occorrenze del singolo numero possono essere ben oltre 10; insomma man mano che accodi numeri al Foglio1 e le varie colonne di X si allungano di presenze oltre le dieci il risultato delle formule non cambia.
Insomma rimane un mistero a che cosa si riferisce la seconda conta.
Ho anche immaginato che la seconda conta si riferisca sempre al numero 101 ma fatto nel range successivo; ma in questo caso non avrebbero senso gli altri numeri (102, 103, ...110) riportati su foglio B, come pure non avrebbe senso fare il conteggio a gruppi di riga e poi sommarli perche' darebbe lo stesso risultato che se si facesse il conteggio su tutto l' intervallo, come pure non avrebbe senso il fatto che si sottrae la conta del 101, perche' alla fine rimarrebbe "zero" e basta.

Insomma devi provarci nuovamente, pero' con meno fantasia e piu' dettaglio.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: conta valori in range parziali

Postdi miko » 11/03/13 11:30

buongiorno,
avevo più volte riflettuto sullo sviluppo che intendevo realizzare,
e credevo che ci fosse una logica nel ragionamento;
le tue perplessità mi hanno messo in crisi ed incomincio a dubitare della mia salute mentale.
in particolare:
..non avrebbe senso fare il conteggio a gruppi di riga e poi sommarli perche' darebbe lo stesso risultato che se si facesse il conteggio su tutto l' intervallo...
.
quello che intendevo ottenere era:
dato un mumero, ad esempio 101, determinare i numeri, le coppie, le terzine etc..
più frequenti dopo la presenza del 101 e fino alla successiva presenza dello stesso numero 101.
quindi ad esempio nei giochi numerici lotto, superenalotto, 10 e lotto, ...
dopo l'uscita di un numero, es. 9, quali sono i numeri che escono con maggiore frequenza,
fino a quando il numero 9 esce nuovamente.
ma evidentemente il criterio che ho esposto deficita in logicità, ed
alla luce della tua risposta devo rivederlo e rinsavirmi.
mi dispiace avervi costretto a leggere un papiro inconcludente.
spero perdonerete questa insana richiesta.
saluti e grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: conta valori in range parziali

Postdi Flash30005 » 11/03/13 11:35

Se fai una ricerca su questo Forum troverai molti esempi che fanno ciò che cerchi
In particolare utenti: Raimea e Lucio Peruggini

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: conta valori in range parziali

Postdi Anthony47 » 11/03/13 16:07

miko ha scritto:le tue perplessità mi hanno messo in crisi ed incomincio a dubitare della mia salute mentale.
Se si tratta di elaborazioni su lotto e affini allora la mia opinione vale quanto il due di briscola; puoi quindi stare tranquillo :D :D

(vedi il post di Flash, sopra).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "conta valori in range parziali":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti