Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

formula matrice a cella singola

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

formula matrice a cella singola

Postdi giorgioa » 31/07/15 08:02

Salve

cortesemente vorrei un aiuto nel compilare una formula in matrice
a cella singola.
Es. ho in C6:D105 queste 2 colonne con nummeri;
in E6 scrivo la seguente formula
=conta.se(C7:D7;C6) a questo punto dovrei distribuire/trascinare
la formula di E6 fino a E105,
Poi in E5 scrivo la formula conta.se(E6:E105;1) e saprei quante
volte si è verificato che il numero della cella SOPRA è presente
nella riga SOTTO.
Vorrei evitare questa immissione di formule in E6:E105
e anche fare a meno della formula in E5,
Ho letto sulla formula in matrice a cella singola che questo calcolo
lo posso ottenere in una sola cella senza distribuire formule in E:E
e per questo questa formula matriciale non riesco ad impostarla.

Chiedo cortesemente un aiuto a come compilare tale formula

Grazie
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Sponsor
 

Re: formula matrice a cella singola

Postdi wallace&gromit » 31/07/15 10:30

Ciao,
puoi usare questa formula matriciale:
Codice: Seleziona tutto
=SOMMA(SE(C6:C105<>"";SE(C6:C105=C7:C106;1)+SE(C6:C105=D7:D106;1)))
l'importante è che i range siano sempre sfasati di uno ma della stessa lunghezza
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: formula matrice a cella singola

Postdi giorgioa » 31/07/15 15:58

Salve Grumit,

se ti devi confessare al prete gli devi raccontare tutto il peccato
altrimenti non puoi avere il perdono del peccato.
Ho pensato che con quella formula che ti ho dato mi avresti risolto
il problema,:
Visto che mi vuoi o volete aiutarmi la dico tutta postando il file
Mi è sufficiente che mi sistemate la formula ce sta in AA6 poi alle altre ghe pensi mi
ricordo che il risultato totale lo vorrei in cella AA6;
preciso che l'esito di C6 , d6, e6 eccetera è puntato sulla sola riga 7;
che l'esito di C7, d7, e7 eccetera è puntato solo sulla riga 8 eccetera.
per chiarimenti .... aspetto oltre la formula completa

http://www.filedropper.com/formulainmatrice_3


Grazie dell'interessamento.
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 01/08/15 23:13

Facciamo che la formula che hai messo in AA6 sia il peccato; se vuoi l'assoluzione dopo l'espiazione di un congrua pena devi dire che cosa vuoi ottenere, perche' leggo e rileggo i messaggi ma non lo capisco.

Ciao!
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula matrice a cella singola

Postdi giorgioa » 02/08/15 10:50

Salve,

grazie anticipatamente dell'ass.....

per una maggiore comprensione dei dati:
i dati posti in X3-Y3-Z3 li puoi passare in X6;Y6;Z6

nella formula di AA6 ci sono i dati delle celle X3; Y3; Z3.
la formula di AA6 vorrebbe sapere quanti punti di AA1 ha ottenuto in tutto
l'archivio rimanendo nella cella AA6;
lo stesso compito farà la formula di AB6 da trascinare a DX

NB1-Nella formula in fondo c'è un riferimento al rigo 1,
NB2- in questa parte di formula c'è un dato che non sono riuscito a sistemare
=SE(CONTA.SE($C6:$V6;(RESTO(SOMMA($C5)+$X$3*$Y$3+$Z$3;90)))+ ecc
che se questo calcolo da zero quello deve essere trasformato in 90
la formula , quando sistemata, sarà trascinata a Dx per sapere quanti
punti ha dato di rigo 1 della rispettiva colonna.

poi la riga delle formule 6 sarà trascinata in rigo 7 e leggerà i punti con i dati diversi messi
in X7-Y7-Z7.

Ho messo tanti dati che se sono riuscito a spiegarmi passerò alle scuole superiori
sempre serali.
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi giorgioa » 02/08/15 18:44

Salve Anthony,

forse questo altro dato mi aiuterebbe a spiegarti cosa vorrei più precisamente:
la premessa che faccio quando chiedo un vs intervento è che della formula che chiedo
mi interessa il risultato finale poi a vs piacimento la formula la potete stravolgere
come volte, detto questo:

su ogni numero che c'è in una riga sarà usato operatore +x poi *y e poi +z quando il
numero ottenuto supera 90 eliminando la parte che eccede 90 e quel numero
con tutti gli altri 19 quindi 20 quanti ce ne sono uguali nelle successivo rigo,
poi sul successivo rigo calcolare con gli stessi numeri in x6+1 *y6+z6.
Ancora il 6°rigo sul 7°; il 7° sul 8°; il 8° sul 9° ecc e l'esito completo lo devo
ottenere tutto in una cella e scrivere se i punti che si ottengono per ogni riga
dell'archivio hanno classe di colonna rigo 1 ;
Facciamo conto che in Ah1 ci sia 7, in rigo 6 di AH dov'è la formula deve contare
su tutte le righe dell'archivio quante volte ha totalizzato 7.
Sempre che il termine sia esatto devo cercare un algoritmo che con i numeri
messi in X-Y-Z abbia dato l'esito più frequente come algoritmo.

Vedi questa Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 03/08/15 00:04

qui faccio finta di aver capito e ti propongo questa userfunction:
Codice: Seleziona tutto
Function GioZzz(ByRef myBlock As Range, ByRef myNums As Range, ByRef TriNum As Range, ByRef myZZZ As Range) As Long
Dim ANums, ATri, vZZZ As Long
Dim I As Long, CCheck As Long, myCnt As Long

ANums = myNums.Value
ATri = TriNum.Value
vZZZ = myZZZ.Value
'
For I = 1 To myNums.Count
    CCheck = (ANums(1, I) + ATri(1, 1) * ATri(1, 2) + ATri(1, 3)) Mod 90
    If CCheck = 0 Then CCheck = 90
    If Application.WorksheetFunction.CountIf(myBlock, CCheck) > 0 Then
        myCnt = myCnt + 1
    End If
Next I
If myCnt = vZZZ Then GioZzz = 1
End Function

Inseriscila in un modulo standard del vba, poi in AA6 inserisci la formula
Codice: Seleziona tutto
=GioZzz($C6:$V6;$C5:$V5;$X$3:$Z$3;AA$1)
Copia verso destra e verso il basso quanto serve
E se cosi' non funziona, prendi (nel file che hai pubblicato) una cella dove il risultato che cosi' ottieni e' errato e spiega quale risultato invece ti aspettavi e perche'.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula matrice a cella singola

Postdi giorgioa » 03/08/15 06:42

Salve Anthony,

ho adattato alcuni dati

http://www.filedropper.com/formulainmatrice_4

nelle celle colorate in giallo il mio esito con possibile scostamento di 1-2 max3
differenze perchè nelle mie formule ci può essere qualche ZERO cioè 90 non calcolato

Per vedere i risultati diversi cambia il numero di x3;
A fianco alla tua formula ho inserito dei numeri per altrettanti calcoli il cui esito
totale dovrebbe risultare nelle celle di colonna AA6 AA7 AA8 ecc

Senza essere frainteso, e mi sta benissimo della function ma ho titolato
il topic FORMULA MATRICE A CELLA SINGOLA.
Se ho capito bene il concetto alla fine è questo quello che vorrei:
senza trascinare le formule nella colonna vorrei avere con una functio/matrice l'esito
totale in una cella.

Uno su mille ce la farà (il millesimo sono io)

Ciao e buona settimana
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 04/08/15 14:07

Mi verrebe voglia di dire: "Sara' il caldo, sara' l'aria di mare, ma in questo quesito non ho ancora capito che calcolo viene richiesto di fare; se mi viene qualche idea non manchero' di intervenire nuovamente".

Ma siccome oggi mi sento un po' masochista dico:
In questo quesito non ho ancora capito che calcolo viene richiesto di fare, proviamo a ripartire da zero...
Hai dei dati numerici da C6 a V150, quindi su 145 righe.
Lasciamo stare le formule che hai impostato: se funzionassero non saremmo qui (credo), se non funzionano allora confondono e basta.
Quali risultati vuoi calcolare? Dove?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula matrice a cella singola

Postdi wallace&gromit » 04/08/15 14:25

Sarà il caldo o l'aria di mare
ma in questo quesito
non ho ancora capito
cosa viene richiesto di fare

se un'idea verrà in mente
qui di nuovo sarò
e non mancherò
d'intervenir nuovamente


agosto 2015, Anthony47, Moderatore e poeta
8) 8) 8)
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: formula matrice a cella singola

Postdi giorgioa » 04/08/15 14:31

Salve,

non che abbia fretta in quello che chiedo,
non so se per questioni di tempo,
non se c'è disponibilità materiale,
solo per capire se con l'ultimo messaggio postato sono riuscito
a rendere più chiaro ciò che vorrei.

So che siete dotati di tanta, tantissima pazienza ed è per questo che
non mi rassegno ad ottenere quanto chiesto.
Ciò premesso vorrei ricominciare da zero e devo fare dei passi per spiegarmi
passi che avranno uno un incremento di dati.
1)-archivio di 145 righe che va da c6 a v6
quindi abbiamo 20 numeri per riga.
2)-nella cella aa6 scrivo 20 conta.se es del 1° e 2° numero e quindi per 20 volte
=conta.se($c7:v7;c6)+conta.se($c7:v7;d6....+conta.se($c7:$v7;v6);
3)-trascino la formula AA6 in giù tanto le righe dell'archivio e alla fine
conterò nella colonna i vari punti;
4)-ritorno in aa6 e aggiungo alla formula in totale dei 20 conta.se
se((...)=aa1;"").

Aggiungo che la formula non è completa.
5) in aa2 scrivo =conta.se(aa6:aa150;aa1)
in aa2 so quante volte ho il risultato di aa1.

Questa è la domanda: la formula in aa6 potrebbe essere messa
sotto forma di matrice che invece di distribuire
la formula in colonna per 150 celle dia il risultato di aa2?

Ripeto che la formula aa6 non è completa, ora vorrei solo capire
se sono stato più chiaro.

Anthony ho ricevuto il tuo messagio alcuni secondi or sono vediamo
se questa è la volta buona

Se mi puoi rispondere così completiamo la formula
i
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi giorgioa » 04/08/15 15:03

per chiarire meglio il se aggiunto,
dopo inviato il messaggio mi sono accorto
che nel se manca un dato:

in aa1=5 (è solo un esempio)

il se nella formula:
se((...)=aa$1;1;"")

quindi alla fine avrò tanti UNO per quante volte ha trovato 5

quindi il conta .se di aa2 mi dirà quante volte si è verificato l'UNO.

Ripeto, la formula di AA6 in forma matrice, senza trascinarla in giù può
darmi il risultato di quante volte ha trovato 5 punti e quindi quante volte UNO.
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi giorgioa » 04/08/15 16:20

wallace&gromit ha scritto:Sarà il caldo o l'aria di mare
ma in questo quesito
non ho ancora capito
cosa viene richiesto di fare

se un'idea verrà in mente
qui di nuovo sarò
e non mancherò
d'intervenir nuovamente


agosto 2015, Anthony47, Moderatore e poeta
8) 8) 8)

:) :D :lol: 8)

Se posso e senza alcun riferimento, me ne guarderei.
Wallece,
per le poesie non sono tanto portato a capirle,
mi spiego
quando frequentavo le scuole basse e la maestra
ci spiegava le poesie quasi quasi prendevo sonno,
ma rimasi colpito quando del Pascoli ne spiegò una
della poesia in se non ci capii tanto ma di quella
mi rimase impresso il titolo

OLTRE LA SIEPE.

Alla fine della spiegazione ben dettagliatamente spiegata
(la poesia) chiesi ma quello sta sempre dietro la siepe?
E se si è sentito male ed ha bisogno di aiuto?
E se ha finito la cart..?
Ancora mi chiedo cosa ci sta a fare dopo 60 anni.
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 05/08/15 01:55

2)-nella cella aa6 scrivo 20 conta.se es del 1° e 2° numero e quindi per 20 volte
=conta.se($c7:v7;c6)+conta.se($c7:v7;d6....+conta.se($c7:$v7;v6);
3)-trascino la formula AA6 in giù tanto le righe dell'archivio e alla fine
conterò nella colonna i vari punti;
4)-ritorno in aa6 e aggiungo alla formula in totale dei 20 conta.se
se((...)=aa1;"").

Al momento l'unica semplificazione che mi e' venuta in mente e' di sostituire questo tuo processo con con
Codice: Seleziona tutto
=SE(SOMMA(CONTA.SE($C6:$V6;$C5:$V5))=$AA$1;1;"")

Vedi se riesci a farne qualche uso.
Ho capito che se ti dessimo una soluzione che somma il risultato di questo calcolo ripetuto su tutte le 145 righe tu saresti soddisfatto; se confermi allora si fara' con una userfunction, ma vista l'ora non ci provo nemmeno.

Quanto all'arte poetica, io al massimo arrivo a qualche ditirambo alquanto strambo.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula matrice a cella singola

Postdi giorgioa » 05/08/15 06:04

Salve Anthony,

Ok un dato è certo che sono riuscito a farmi capire che
nella cella aa6 vorrei sapere tutto il risultato della colonna
(145) senza aver trascinato la formula in giù.

Ora non vorrei allarmarmi, ho messo la formula nella cella aa6
=SE(SOMMA(CONTA.SE($C6:$V6;$C5:$V5))=$AA$1;1;"")
ma non mi da nessun risultato a meno che è solo una prova.

Solo per evitare errori nel se la colonna indicata va senza
riferimento assoluto mentre la riga si.

Prima di cominciare ad abbozzare la function dovresti completare
la formula che il dato del conta.se($c:$v; C(questo) va completato con resto(somma ecc
i segni degli operatori cortesemente ponili in x1 il + ; y1 il *; z1 il +
Tieni presente che i segni degli operatori potrebbero subire dei cambiamenti,
quindi considerare le celle con i segni dentro;
poi i numeri da moltiplicare o addizionare al conta.se considerali in X6; Y6; Z6.

Per una maggiore precisazione la formula/function che leggerà i dati da AA6
sarà cmq trascinata in giù e a desta e quando in giù deve addizionare e moltiplicare i dati di
X7 Y7 Z7 e quindi da AA7 avro altri dati dei numeri in quelle celle. I numeri in queste celle
senza andare oltre 90 puoi usare quelli che vuoi.
Chiariamo questi dati

raccomando ancora: per quanto riguarda l'archivio porta dei riferimenti di riga
come inizio e fine. Ho riportato 145 righe ma potrebbero essere in + oppure in -.

Qualche (+) mi prendo la licenza senza pagar tasse di scherzare ma la questione
di OLTRE LA SIEPE è un raccontato vero. :D :lol:
Dai che a fine mese vado al mare pure io non vedo l'ora che questi giorni passano presto
, e in genere sono pure fortunato mi becco sempre giornate di piogge (jella)
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 07/08/15 01:21

Ok un dato è certo che sono riuscito a farmi capire che
nella cella aa6 vorrei sapere tutto il risultato della colonna
(145) senza aver trascinato la formula in giù.
Diciamo che e' stato fatto un passo avanti, probabilmente. Avendo nuovamente tirato in ballo i valori da sommare e moltiplicare devo immaginare che i punti 1, 2, 3 e 4 che avevi fatto ieri pomeriggio non sono quelli reali, quindi nella formula non ci sono 20 "conta.se($C7:V7;Cx)" ma 20 "conta.se($c7:v7;ValoreCalcolatoVoltaPerVolta)".
Prendero' per buona la formula inserita nel file che avevi pubblicato:
=SE(CONTA.SE($C6:$V6;(RESTO(SOMMA($C5)+$X$3*$Y$3+$Z$3;90)))+CONTA.SE($C6:$V6;(RESTO(SOMMA($D5)+$X$3*$Y$3+$Z$3;90)))+EtcEtc+EtcEtc+ + + ...+CONTA.SE($C6:$V6;(RESTO(SOMMA($V5)+$X$3*$Y$3+$Z$3;90))))=$AA$1;1;"")

Alla userfunction sara' passato il riferimento all'intervallo dati (C6:V150, nel file pubblicato); il riferimento ai tre valori adiacenti che saranno usati nel calcolo di ValoreCalcolatoVoltaPerVolta (X3-Y3-Z3 nel file pubblicato). La userfunction non confrontera' il risultato con una valore prefissato (AA1 nell'esempio), ma restituira' il conteggio complessivo per consentire il debug del calcolo: sara' la tua formula che confronta il conteggio col valore che preferisci e restituire il risultato cercato.
Il codice della userfunction:
Codice: Seleziona tutto
Function AZzz(ByRef myAll As Range, ByRef my3 As Range) As Long
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105141
Dim I As Long, J As Long, myTot As Long
'
For I = 1 To myAll.Rows.Count
    For J = 1 To myAll.Columns.Count
        mycrit = (myAll.Cells(I - 1, J).Value + (my3.Cells(1, 1) * my3.Cells(1, 2)) + my3.Cells(1, 3)) Mod 90
        myTot = myTot + Application.WorksheetFunction.CountIf( _
            Application.WorksheetFunction.Index(myAll, I, 0), mycrit)
    Next J
Next I
AZzz = myTot
End Function
Successivamente nel foglio scriverai
Codice: Seleziona tutto
=AZzz(C6:V150;X3:Z3)

Questo dovrebbe darti il conteggio complessivo di quante volte ValoreCalcolatoVoltaPerVolta e' presente nella tabella estrazioni, facendo i calcoli riga per riga.
Se vuoi ottenere risultati piu' articolati utilizzerai questo risultato nell'ambito di una formula piu' complessa; es
Codice: Seleziona tutto
=SE(AZzz(C6:V150;X3:Z3)=AA$1;1;"")

NB: e' solo un esempio, non so se questa formula ti servira' ancora
NB2: se devi usare formule piu' complesse, cerca di inserire il conteggio ottenuto con AZzz in una cella e poi utilizza questo valore per le formule piu' complesse: la function impiega 1-2 decimi di sec per completarsi, eseguirla decine o centinaia di volte risultera' sempre piu' rallentante.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula matrice a cella singola

Postdi giorgioa » 07/08/15 08:23

Anthony47 ha scritto:
Prendero' per buona la formula inserita nel file che avevi pubblicato:
=SE(CONTA.SE($C6:$V6;(RESTO(SOMMA($C5)+$X$3*$Y$3+$Z$3;90)))+CONTA.SE($C6:$V6;(RESTO(SOMMA($D5)+$X$3*$Y$3+$Z$3;90)))+EtcEtc+EtcEtc+ + + ...+CONTA.SE($C6:$V6;(RESTO(SOMMA($V5)+$X$3*$Y$3+$Z$3;90))))=$AA$1;1;"")

Alla userfunction sara' passato il riferimento all'intervallo dati (C6:V150, nel file pubblicato); il riferimento ai tre valori adiacenti che saranno usati nel calcolo di ValoreCalcolatoVoltaPerVolta (X3-Y3-Z3 nel file pubblicato). La userfunction non confrontera' il risultato con una valore prefissato (AA1 nell'esempio), ma restituira' il conteggio complessivo per consentire il debug del calcolo: sara' la tua formula che confronta il conteggio col valore che preferisci e restituire il risultato cercato

Se vuoi ottenere risultati piu' articolati utilizzerai questo risultato nell'ambito di una formula piu' complessa; es
Codice: Seleziona tutto
=SE(AZzz(C6:V150;X3:Z3)=AA$1;1;"")

NB: e' solo un esempio, non so se questa formula ti servira' ancora
NB2: se devi usare formule piu' complesse, cerca di inserire il conteggio ottenuto con AZzz in una cella e poi utilizza questo valore per le formule piu' complesse: la function impiega 1-2 decimi di sec per completarsi, eseguirla decine o centinaia di volte risultera' sempre piu' rallentante.


Buona giornata Anthony47,
1) Precisazione: nella function quando fa il calcolo nelle formule mie mancava: (1 conta.se per ogni numero) hai tenuto presente che se resto da ZERO "0" quello zero diventa 90;
2) se nel conteggio orizzontale (riga per riga) il risultato non tiene conto di: quante volte ha trovato AA1 quindi nella cella AA6 è questo che vorrei vedere; ho usato
la prima formula e mi da 665 a cosa si riferisce? mentre se uso la seconda mi da nulla.
3)i dati di x3:z3 portarli a partie da X6:Z6;
3)Bis- per spiegarmi- la formula che la function fa funzionare (per spiegarmi cosa fa-anche perchè se la formula rimane in AA6 che senso avrebbe) la parte che controlla
l'archivio diventa $c$6:$v$150.. perchè questa sarà trascinata in basso e cmq a DX per avere i risultati dei numero/punti in rigo 1
4) gli operatori dovrebbero essere e considerati in X1=+; y1=*; Z1=+, questo perchè in seguito posso scambiarli di posizione sempre in x-y-z.
Ho detto troppo meglio che mi fermo e puntualizza ciò che non ho espresso in modo chiaro
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 11/08/15 16:19

Riprendiamo...
1) Precisazione: nella function quando fa il calcolo nelle formule mie mancava: (1 conta.se per ogni numero) hai tenuto presente che se resto da ZERO "0" quello zero diventa 90
No, di questa storia del 90 non ne so niente.
Se vuoi che quel calcolo restituisca da 1 a 90 allora aggiungi questa riga in questa posizione
Codice: Seleziona tutto
mycrit = (myAll.Cells(I - 1, J).Value + (my3.Cells(1, 1) * my3.Cells(1, 2)) + my3.Cells(1, 3)) Mod 90  'ESISTENTE
if mycrit = 0 then mycrit = 90    'AGGIUNGERE

2) se nel conteggio orizzontale (riga per riga) il risultato non tiene conto di: quante volte ha trovato AA1 quindi nella cella AA6 è questo che vorrei vedere; ho usato
la prima formula e mi da 665 a cosa si riferisce? mentre se uso la seconda mi da nulla.
La funzione conta riga per riga il risultato della formula che ho mimato e somma i risultati di tutte le righe dell'intervallo.
La formula che ho suggerito, =AZzz(C6:V150;X3:Z3), applicata sui dati del file pubblicato il giorno 3-8, mi da 650 (4, 2, 7 sono in X3:Z3, non so se corrisponde ancora al valore originale).
650 e' il risultato del calcolo fatto su Riga6 con riferimento ai dati in Riga5, poi su Riga7 con riferimento ai dati in Riga6, poi su Riga8 con riferimento ai dati in Riga7, etc etc
Risultati piu' articolati li devi calcolare tu.

Ora pero' mi viene il dubbio che la somma debba essere fatta gia' avendo confrontato il risultato riga per riga al valore in AA1; cioe' contare solo le volte che nella riga il risultato e' pari ad AA1.
Se e' cosi' allora la function doverebbe essere modificata in
Codice: Seleziona tutto
Function BZzz(ByRef myAll As Range, ByRef my3 As Range, ByVal myComp As Long) As Long
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105141
Dim I As Long, J As Long, myTot As Long
'
For I = 1 To myAll.Rows.Count
    For J = 1 To myAll.Columns.Count
        mycrit = (myAll.Cells(I - 1, J).Value + (my3.Cells(1, 1) * my3.Cells(1, 2)) + my3.Cells(1, 3)) Mod 90
        If mycrit = 0 Then mycrit = 90
        myTot = myTot + Application.WorksheetFunction.CountIf( _
            Application.WorksheetFunction.Index(myAll, I, 0), mycrit)
    Next J
    If myTot = myComp Then BZzz = BZzz + 1
    myTot = 0
Next I
End Function
(questo codice tiene gia' conto del discorso che 0=90)

Poi userai la formula
Codice: Seleziona tutto
=BZzz($C6:$V150;$X3:$Z3;AA1)

Da copiare poi in orizzontale

3)i dati di x3:z3 portarli a partie da X6:Z6
Questo lo fai da solo, basta che nella formula usi le coordinate giuste (nella formula che ti ho dato sono ancora $X3:$Z3).
Non capisco pero' quel "a parti[re]e da X6:Z6", perche per me si tratta di 3 celle 3, che stanno a un indirizzo preciso, non "a partire" da un indirizzo.

3)Bis- per spiegarmi- la formula che la function fa funzionare (per spiegarmi cosa fa-anche perchè se la formula rimane in AA6 che senso avrebbe) la parte che controlla
l'archivio diventa $c$6:$v$150.. perchè questa sarà trascinata in basso e cmq a DX per avere i risultati dei numero/punti in rigo 1
Da quel che ho capito finora la formula non andra' copiata verso il basso; comunque andra' copiata verso destra, per cui nella nuova formula ho messo i $ che servono per la copia verso destra.

4) gli operatori dovrebbero essere e considerati in X1=+; y1=*; Z1=+, questo perchè in seguito posso scambiarli di posizione sempre in x-y-z.
La function si aspetta che queste tre informazioni siano in tre celle adiacenti in orizzontale, di cui il primo valore sara' moltiplicato per il secondo e poi sommato col terzo (prima di essere elaborato come "modulo 90"); l'indirizzo di questo intervallo lo inserirai tu nella formula (nella formula che ti ho dato sono in $X3:$Z3)

Spero che sia piu' chiaro...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula matrice a cella singola

Postdi giorgioa » 11/08/15 19:09

Salve Anthony,

la Function/formula funziona,
hai detto che se il calcolo da ZERO restituisce 90
e nel calcolo di rigo sopra controlla quanti numeri
uguali ci sono al rigo sotto in base al numero riportato
in AA1 AB1 AC1 ecc;
e non finisci qui, ci sarebbe da scrive qualche altra
non so cosa codice in VBA o altro.
Riporto nuovamente il file
Nel file ho messo l'attenzione sui numeri scritto in rosso.
Nelle colonne
X6 ; Y6; Z6.
X7 ; Y7; Z7
X8 ; Y8; Z8
ECC;ECC;ECC
dovranno essere distribuite le formule che conteggerà sul
numero dell'archivio di C6, D6 ecc
succede che molte formule fatto il calcolo come dimostrato
in Colonna AF6-7-8 danno lo stesso esito cioè 5 molte formule
danno 4 ecc ecc.;
DOMANDA si può avere UNA macro che mi scriva la prima formula
come rappresentativa di tutte le altre che danno lo stesso risultato?
Per i conteggi, ogni colonna ha i numeri da 1 a 90
Eventualmente si può fare i dati da trascriverli in un foglio a parte.

Si può fare?

Spero e prego che la spiegazione sia chiara e limpida ammesso che si possa fare :roll: .

Salve



http://www.filedropper.com/formulainmatrice2_1
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula matrice a cella singola

Postdi Anthony47 » 12/08/15 23:30

Come spesso succede si chiede una cosa ma se ne deve fare un'altra... Nello specifico, le tue formule da cui siamo partiti calcolavano un risultato sulla base di 3 costanti scritte in 3 celle a parte, lavorando su un tot di righe e un tot di colonne. E la richiesta era (da come penso di averla capita) di fare tutto in una unica cella per evitare di scrivere N formule in verticale e poi sommarne i valori.

Adesso siamo finiti in una situazione dove ogni riga ha le sue 3 costanti diverse...

Il risultato e' che la function bZzz sara' disottimizzata e mangera' tempo per essere ricalcolarsi N ed N volte.

succede che molte formule fatto il calcolo come dimostrato
in Colonna AF6-7-8 danno lo stesso esito cioè 5 molte formule
danno 4 ecc ecc.;
Mi spiace, ma secondo me sbagli i calcoli; infatti il calcolo (Col C)+(Col X * Col Y)+ (Col Z) sulle prime tre righe fa rispettivamente 5, 4 e 3, non 5-5-5; come visibile nelle celle con sfondo giallo:
Immagine
url immagine

DOMANDA si può avere UNA macro che mi scriva la prima formula
come rappresentativa di tutte le altre che danno lo stesso risultato?
Per i conteggi, ogni colonna ha i numeri da 1 a 90
Eventualmente si può fare i dati da trascriverli in un foglio a parte
Non l'ho capita, ma forse (per quanto detto al punto precedente) non e' nemmeno necessario.

Spero e prego che la spiegazione sia chiara e limpida
Piu' o meno come al solito? :-? :D :D :undecided:

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "formula matrice a cella singola":


Chi c’è in linea

Visitano il forum: Marius44 e 5 ospiti