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 28 giugno 2025
    Bari
    41
    76
    54
    04
    17
    Cagliari
    34
    52
    84
    54
    55
    Firenze
    21
    60
    89
    51
    03
    Genova
    36
    40
    46
    03
    73
    Milano
    32
    80
    01
    68
    12
    Napoli
    63
    34
    22
    85
    10
    Palermo
    21
    85
    64
    15
    65
    Roma
    48
    25
    42
    47
    50
    Torino
    51
    25
    14
    20
    28
    Venezia
    82
    48
    73
    53
    29
    Nazionale
    46
    55
    10
    32
    44
    Estrazione Simbolotto
    Napoli
    25
    01
    41
    45
    38
Indietro
Alto