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
    venerdì 17 gennaio 2025
    Bari
    10
    87
    77
    23
    60
    Cagliari
    75
    33
    60
    24
    15
    Firenze
    45
    34
    66
    41
    17
    Genova
    05
    65
    15
    53
    86
    Milano
    20
    84
    74
    76
    01
    Napoli
    90
    29
    38
    52
    68
    Palermo
    33
    36
    02
    20
    68
    Roma
    68
    12
    59
    07
    74
    Torino
    03
    22
    29
    90
    28
    Venezia
    81
    24
    35
    18
    03
    Nazionale
    06
    31
    35
    89
    74
    Estrazione Simbolotto
    Bari
    14
    24
    17
    13
    08
Indietro
Alto