Novità

OrdinaMatrice / CreaTabellaOrdinabile [x Luigi]

  • Creatore Discussione Creatore Discussione joe
  • Data di inizio Data di inizio

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:
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 :)
 
Ciao, Si ...

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

mentre io dicevo qualcosa del tipo

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

:)
 
Ultima modifica:
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 :)
 
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
 
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
 
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
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
 
Belinnnnn Luigi, non ci dai il tempo di testare che fai modifiche.... è arrivaa la 1.6.8 :) :)
ottimo lavoro.
 
Ultima modifica:
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
    sabato 19 luglio 2025
    Bari
    70
    37
    36
    68
    01
    Cagliari
    57
    02
    64
    33
    41
    Firenze
    18
    62
    09
    05
    06
    Genova
    36
    10
    74
    37
    42
    Milano
    39
    07
    58
    23
    22
    Napoli
    18
    69
    28
    36
    40
    Palermo
    71
    66
    72
    64
    23
    Roma
    19
    64
    39
    77
    10
    Torino
    83
    63
    71
    08
    72
    Venezia
    51
    83
    26
    50
    74
    Nazionale
    89
    81
    63
    32
    03
    Estrazione Simbolotto
    Nazionale
    16
    32
    21
    19
    03
Indietro
Alto