Novità

OrdinaMatrice / CreaTabellaOrdinabile [x Luigi]

joe

Advanced Member >PLATINUM PLUS<
Ciao Luigi,

Un caro saluto, innanzi tutto ed il mio ringraziamento per la tua solita cortesia, collaborazione ed aiuto.

Veniamo subito al dunque con un esempio pratico.

Diciamo di avere dopo -enne estrazioni- per ogni "Numero" una "Frequenza" e un "Ritardo".

Li si mette in una matrice ed è possibile ordinarli per ognuna delle 3 voci:

Numero / Frequenza / Ritardo.

CON ORDIMATRICE è possibile anche scegliere con che "ORDINE DI COLONNA" procedere.

CON CREATABELLATABELLAORDINABILE (sembra di NO).

Dunque prime richieste:

E' vero questo?

Pensi potrai integrare la stessa possibilità di selezione delle colonne in CreaTabellaOrdinabile ?

......

SUL TIPO DI ORDINAMENTO: True/False

Se ho capito bene e non sbaglio, è di tipo "GLOBALE"

cioè riguarda indistintamente tutte le colonne della tabella.

Cioè avendo FREQUENZE e RITARDI (come prima detto) l'ordinamento potrà risultare SOLO

dal BASSO/BASSO/BASSO all' ALTO/ALTO/ALTO (True) oppure

dall' ALTO/ALTO/ALTO al BASSO/BASSO/BASSO (False)

Escludendo, per esempio, si possa ordinare "l'intera tabella" ed avere

UN ORDINAMENTO CROCIATO come per esempio prima linea

avere il un numero che abbia CERTAMENTE:

la più ALTA-FREQUENZA assieme al più BASSO-RITARDO.

... Perdona se non sono stato sufficientemente chiaro, specie in quest'ultimo esempio incompleto,

ma so che hai possibilità di capire, l'essenza della richiesta.

Spero mi perdonerai anche "il crescendo" giustificato dalla necessità di non porre

"una domanda secca" di più difficile interpretazione.

In ogni caso mi sai disponibile ... ad ogni chiarimento,

Sempre SE ritieni opportuno aggiungere potenza di calcolo ed hai necessità di altre spiegazioni.

:) Buon-Week-End
 
Ultima modifica:

i legend

Premium Member
Ciao a tutti :)
Joe crea tabella ordinabile si può ordinare anche con più colonne se non erro ma come dici te alto alto o basso basso.
appena posso ti passo un esempio.
La parola a luigi :)
 

joe

Advanced Member >PLATINUM PLUS<
Ciao, Si ...

con OrdinaMatrice (True,"1.2.3.....")

mentre io dicevo qualcosa del tipo

CreaTabellaOrdinabile, ("2False, 3False, 1True, 4True, 5False")

:)
 
Ultima modifica:

i legend

Premium Member
Ciao ora ho capito ...
un ottimizzazione niente male.
Se posso aggiungere un idea visto che è collegata alla tabella anche il filtro sarebbe da ottimizzare con la possibilità di scegliere con And e or sulla medesima colonna o più colonne. Ma non ho idea del lavoro che ciò comporterebbe.
domanda : il foglio di calcolo ha un ordinamento così potente da scegliere il verso di più colonne contemporaneamente?
ciao e buon lavoro :)
 
L

LuigiB

Guest
ciao joe , ho vfatto delle modifiche alal grigliaordinabile per le quali è possibile ordinare per colonne multiple con verso di ordinamentospecifico per colonna, il fatto è che si possono usare solo tramite interfaccia utente ,cioè l'utente lo puo fare una volta che la griglia appare a video , lo script invece quando crea la tabella non puo impostare l'ordinamento multiplo è come prima ...
ho inoltre aggiunto una nuova funzione nello spazioscript che consente di ordinare una amtrice per colonne multiple con verso specifico per colonna.
La nuova istruzione si chiama "ordinamatrice2"

ecco uno script di esempio

Codice:
Option Explicit
Sub Main
    Dim k,j
    Dim n
    Dim s
    Const nUpper = 100
    ReDim avA(nUpper,7)


    ReDim aIdCol(2) ' contiene gli indici delle colonne per cui eseguire l'ordinamento
                ' in questo caso di esempio sono usate 2 colonne    

    ReDim aIdVerso(2) 'contiene il verso di ordinamento specifico per la colonna (desc = -1 asc = 1 )

    'creo un array e lo valorizzo con numeri casuali
    For k = 1 To nUpper
        For j = 1 To 7
            n = NumeroCasuale(1,10)
            avA(k,j) = n

        Next
    Next

    ' valorizzo l'array che indica le colonne per cui si esegue l'ordimanto
    ' in questo caso dell'esempio susiamo le colonne 1 e 2
    aIdCol(1) = 1
    aIdCol(2) = 2

    ' valorizzo il verso di ordinamento specifico per la colonna
    aIdVerso(1) = - 1 ' decrescente per la prima col
    aIdVerso(2) = 1 ' crescente per la seconda col

    ' ordina la matrice
    Call OrdinaMatrice2(avA,aIdCol,aIdVerso,True)

    ' scrive i dati ordinat a video per la verifica
    For k = 1 To nUpper
        s = ""
        For j = 1 To 7
            s = s & avA(k,j) & "."
        Next
        Call Scrivi(RimuoviLastChr(s,"."))
    Next



End Sub
 

Mike58

Advanced Member >PLATINUM PLUS<
Luigi, scusa se mi intrometto nel post di joe.
Provato la Nuova TabellaOrdinabile, ottimo l'rdinamento con scelta utente, ma purtroppo a me comprime le colonne e se ho una cella con tanti dati questi vengono compressi e per visualizzarli bisogna allargare la colonna.

Ciao
 
L

LuigiB

Guest
ciao Mike , per ovviare al problema attualmente puoi inserire un numero di caratteri arbitrari (per esempio lo spazio) al titolo della colonna in modo di farla allargare quanto basti
 
  • Like
Reazioni: joe

claudio8

Premium Member
X luigi o chiunque altro, mi occorre un chiarimento:

Codice:
matrice senza alcun ordinamento
           10      5      4      1      6      4      5
            3      1      2      6      7      2     10
            8      7      5      8      9     10      3
            6      2      3      9     10      9      7
            2      3      1      1      2      2      9
            8      2     10      9      6      5      2
            8      6      6      6      3      4     10
            6      4      5      2      5      5     10
            9      4      4      9      1      2      2
           10      7      3      9      9      1     10

ordinato con OrdinaMatrice2  --  con priorita col.1 verso -1 e secondaria col.2 verso -1
10.07.03.09.09.01.10
10.05.04.01.06.04.05
09.04.04.09.01.02.02
08.07.05.08.09.10.03
08.06.06.06.03.04.10
08.02.10.09.06.05.02
06.04.05.02.05.05.10
06.02.03.09.10.09.07
03.01.02.06.07.02.10
02.03.01.01.02.02.09

Nella array degli indici di colonna occorre inserire le priorità delle colonne da ordinare, visto che solo a parità di valore della prima colonna, viene ad essere influente l'ordinamento della "secondaria". ( daltronde se non fosse così, verrebbero ad essere compromesse le righe). quindi gli ordinamenti vengono applicati " A SCALARE". Datemi conferma del fatto che ho capito bene, o meno. Grazie
 

claudio8

Premium Member
Belinnnnn Luigi, non ci dai il tempo di testare che fai modifiche.... è arrivaa la 1.6.8 :) :)
ottimo lavoro.
 
Ultima modifica:
L

LuigiB

Guest
Ciao Claudio .. diciamo che in questo weekend sono stato produttivo ...:)
Per i ltuo quesito è chiaro che è come dici .. il confronto tra i dati per ordinare le righe delal griglia o gli elementi della amtrice avviene in sequenza , a partire dalla prima col specificata a seguire ..è pssibile inserire al max 10 colonne.
 
Ultima modifica di un moderatore:

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 23 aprile 2024
    Bari
    47
    22
    34
    20
    50
    Cagliari
    33
    14
    86
    02
    62
    Firenze
    61
    22
    44
    19
    26
    Genova
    21
    12
    57
    82
    55
    Milano
    66
    05
    11
    70
    30
    Napoli
    05
    23
    25
    52
    73
    Palermo
    23
    44
    49
    71
    65
    Roma
    82
    37
    59
    34
    71
    Torino
    26
    42
    66
    15
    58
    Venezia
    57
    06
    68
    54
    84
    Nazionale
    21
    79
    49
    03
    01
    Estrazione Simbolotto
    Genova
    24
    02
    19
    03
    27

Ultimi Messaggi

Alto