|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
23-03-2017, 11.29.05 | #16 |
Sospeso
Registrato: 25-03-2008
Messaggi: 247
|
Rif: Conta.Se (Excel home 2016)
R. |
23-03-2017, 12.12.35 | #17 | |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Conta.Se (Excel home 2016)
Quota:
Ho creato un range di selezione definendo una matrice monodimensionale i cui estremi sono la prima e l'ultima riga: Sull'intera matrice costituita da valori alfanumerici ho effettuato un ordinamento di tipo crescente.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
|
23-03-2017, 16.32.43 | #18 |
Sospeso
Registrato: 25-03-2008
Messaggi: 247
|
Rif: Conta.Se (Excel home 2016)
A questo proposito non so che dire di più.
Ma, tornando all'oggetto primario di questa discussione, debbo dire che le funzioni CONTA.SE e CONTA.PIU.SE funzionano egregiamente trovando all'interno di aree di celle sia numeriche sia alfanumeriche gli elementi che corrispondono ai criteri "<=>", superando quindi la necessità di funzioni esterne, come avevo provato a fare io. Grazie a tutti per gli interventi. Ric |
23-03-2017, 20.18.22 | #19 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: Conta.Se (Excel home 2016)
Excel ordina i numeri in base ai loro valori e le parole in ordine alfabetico, inoltre prende in considerazione criteri di ordinamento come:
1) prima le cifre da 0 a 9 2) Poi lo spazio 3) quindi i caratteri speciali e i segni di punteggiatura come !$%&/*@[ <=> etc. Il problema di ordinamento che ha manifestato LoryOne a mio avviso è dovuto a una diversa "personalizzazione" dei criteri si ordinamento in Calc.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
23-03-2017, 21.21.42 | #20 | ||
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: Conta.Se (Excel home 2016)
Tornando al quesito posto ....... hai detto:
abbiamo usato la funzione SE per contare quante volte un valore è presente in un intervallo di celle e che soddisfi un determinato criterio (es. > 150), ossia quanti valori sono presenti in un range di celle che siano maggiori di 150 Dopo hai chiesto Quota:
Quota:
contare quante volte una stringa è presente in un intervallo?? (abc) contare quante volte una stringa alfanumerica è presente in un intervallo?? (123abc) confrontare delle stringhe in un intervallo e ordinarle?? (582kya) dobbiamo fare una funzione/sub vba con un criterio di ricerca per sapere in un intervallo di celle quante volte è presente la "voce" zkw953 ???? non capisco cosa serve sapere "232abc" è minore di "253cde" ed è maggiore di "167zzz" se cerchiamo zkw953 ??? io non ho ancora capito sarebbe opportuno una spiegazione più dettagliata.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
||
24-03-2017, 11.23.29 | #21 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: Conta.Se (Excel home 2016)
Riccardo vuole semplicemente contare quante volte, all'interno di un range di valori, un altro valore passato come parametro è > oppure = oppure < oppure <= oppure >= rispetto ad ogni valore nel range.
Per far questo, aveva in precedenza prodotto una sua funzione in VBA, ma poi si è accorto che Excel ha già cio che gli serviva. Nello scrivere la funzione, però, ha fatto riferimento a StrComp che mette in comparazione due sequenze alfanumeriche; Da li in poi, si è chiesto in che modo funzionasse tale funzione ed ha dedotto: "Io credo che la stringa sia valutata in funzione dei caratteri ASCII da cui è composta: ad es. "1" vale 48 nella tabella ASCII, "A" vale 65, per cui è > di "1" e così via" 48 è '0', 49 è '1', 65 è 'A', 97 è 'a' (cioè 65+32),ecc,ecc Dando validità alla sua asserzione, avendo stabilito che due parametri p1 e p2 messi in correlazione producono un risultato secondo il quale p1 è maggiore di p2 o viceversa, volendo fornire un più ampio margine applicativo alla logica algoritmica di comparazione, ho proposto di effettuare un ordinamento crescente o decrescente di differenti valori alfanumerici, riscontrando diversità tra il risultato proposto da Excel e quello di Calc ed attribuendo a quest'ultimo, a mio avviso, un migilor risultato a parità di condizione.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
24-03-2017, 11.35.57 | #22 |
Sospeso
Registrato: 25-03-2008
Messaggi: 247
|
Rif: Conta.Se (Excel home 2016)
E' perfetto LoryOne, hai interpretato perfettamente tutta la storia, partita dal confronto numerico ed estesa successivamente al confronto di stringhe.
Non resta che affidarsi fiduciosamente alle funzioni integrate in excel per verificare che esse conteggiano effettivamente quanti valori sono compresi fra gli estremi desiderati, quindi ogni altra discussione sull'ordinamento crescente/decrescente è puramente accademica. Tuttavia questa discussione, per me, è stata veramente interessante ed illuminante rispetto a tutti i punti toccati. Grazie veramente a tutti i partecipanti. Riccardo |
24-03-2017, 20.19.43 | #23 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: Conta.Se (Excel home 2016)
stiamo parlando di una cosa accademica???
No perchè determinare il valore < o > in un range ha un senso logico, stiamo parlando di numeri, Excel è un foglio di calcolo. Trovare con gli stessi criteri in un range di stringhe è illogico. una stringa può essere comparata con altre stringhe, ma mai con un valore numerico. posso contare quante volte un determinato carattere compare in un range, quante stringhe uguali ci sono etc... e questo ha un senso logico, numeri con numeri e stringhe con stringhe, ma mescolare le 2 cose con criteri numerici è un conflitto. IMHO
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
25-03-2017, 15.33.22 | #24 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Conta.Se (Excel home 2016)
Numeri e stringhe si confrontano quando devi ordinare dei valori alfanumerici. In questo caso non puoi fare a meno di trovare un modo che permetta di valutare cosa venga prima o dopo.
Questo modo, di norma, è il confronto della codifica ascii (o unicode) del carattere: sia quelli numerici che quelli alfabetici ne hanno una, è un numero e può essere ordinata. E in questo caso i numeri vengono prima delle lettere. In soldoni, se la tua domanda è: "viene prima la parola cisco o la parola 3com?", un modo per risolvere il problema va trovato.
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
25-03-2017, 23.31.33 | #25 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: Conta.Se (Excel home 2016)
@borgata
si ma i criteri di precedenza in un ordinamento è stabilito dalle regole di VB, come avevo citato qualche post sopra, è il metodo più stabile e affidabile da estrapolare. A mio avviso usare la conversione Ascii non è affidabile in quanto se usiamo il codice vba come una funzione abbiamo sempre l'operatore (< > =) che può falsare il valore ascii della stringa in esame. penso che la strada da seguire sia la funzione StrComp che aveva presentato riccardo, e che ho modificato. Questa funzione confronta 2 stringhe e restituisce un valore che può essere: -1 se la stringa1 è minore della stringa2 0 se la stringa1 è uguale alla stringa2 1 se la stringa1 è maggiore della stringa2 Ora facendo un test, per cui parliamo di codice in versione beta, ho ottenuto questo facendo un confronto tra la stringa in A1 e quella in A2 sappiamo subito (tra le 2) quale sia < > o = come si vede in colonna C. Il codice è questo Codice:
Sub test1() Dim conf, i As Integer Dim string1, string2 As String For i = 1 To 7 string1 = Range("A" & i) string2 = Range("A" & i + 1) conf = StrComp(string1, string2, vbTextCompare) Select Case conf Case 0 Range("C" & i) = "uguale" Case 1 Range("C" & i) = "è maggiore" Case -1 Range("C" & i) = "è minore" End Select Next i End Sub ????
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
26-03-2017, 19.09.39 | #26 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: Conta.Se (Excel home 2016)
Aspetta... stai confondendo il metodo di confronto con il metodo di ordinamento.
Quello di cui si parlava mi pare fosse il metodo di confronto, ossia stabilire quando una stringa viene prima di un'altra nell'ordinamento. Come dicevamo, il metodo "standard" per stabilire questo ordinamento è utilizzare la codifica ascii/unicode del carattere (a seconda della codifica utilizzata), che può essere facilmente confrontata e da un risultato tipicamente accettato da tutti. Ovviamente nulla ci vieta di creare un nostro criterio di confronto qualora ce ne fosse la necessità, ma non mi pare questo il caso. Oltretutto se non ricordo male il problema è dovuto al fatto che incomprensibilmente Excel ordina le stringhe in maniera non standard, a differenza di Calc che esegue l'ordinamento in modo corretto. Il problema dove sta quindi? Si vuole ricreare con Excel la codifica ottenuta con Calc?
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
27-03-2017, 10.18.37 | #27 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: Conta.Se (Excel home 2016)
no, stavo solo facendo un ragionamento "accademico" sul metodo da usare. (StrComp)
confrontando 2 stringhe con StrComp possiamo ottenere quello che cerchiamo, cioè una stringa può essere maggiore, minore o oguale della stringa di comparazione. per cui se cerchiamo quanti valori sono compresi tra 2 indici (> e <) possiamo usare il valore che restituisce StrComp. Ma questo ancora Sabato, ieri ho avuto un po' di tempo e ho visto che convertendo in ascii la stringa si semplifica notevolmente il lavoro di programmazione ricavando un codice più affidabile. Poi parlando di ordinamento, che in questo contesto io lo farei, in Excel viene eseguito dando la precedenza a: 1) prima le cifre da 0 a 9 2) Poi lo spazio 3) quindi i caratteri speciali e i segni di punteggiatura come !$%&/*@[ <=> etc. 4) poi i valori stringa. e i metodi di confronto tra le stringhe seguono lo stesso criterio dell'ordinamento Mentre invece convertendo la stringa in ascii viene semplificato il tutto in quanto diventando un numero basta solo applicare il metodo usato dalla funzione SE per avere il conteggio delle occorrenze tra 2 indici.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
27-03-2017, 22.34.53 | #28 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: Conta.Se (Excel home 2016)
Lasciando perdere l'accademico ...... tutto finisce con la stessa formula
=CONTA.SE(A2:A8; ">="&"BC350") =CONTA.PIÙ.SE(A18:A24;"<="&"FR3500";A18:A24;">="&" BC350") oppure =CONTA.PIÙ.SE(A18:A24;"<=FR3500";A18:A24;">=BC350" ) funziona anche con i valori numerici dopo la stringa =CONTA.PIÙ.SE(E18:E24;"<="&"350BC";E18:E24;">="&"3 500FR") in questo caso si devono invertire gli estremi della ricerca.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Excel 2016 e Vba "Ricerca file" | kilow | Office suite | 5 | 06-01-2017 10.13.52 |
Corso VBA | Alexsandra | Guide | 85 | 16-11-2016 11.11.51 |
Europei di Calcio 2016 con Excel | Alexsandra | Office suite | 30 | 24-06-2016 23.14.08 |
Laboratorio di VBA: Programmi e file sorgenti | Alexsandra | Guide | 17 | 16-03-2016 20.33.27 |