Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

sort range particolare

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

sort range particolare

Postdi miko » 21/06/22 15:59

Buonasera,
ho il seguente problema che vi espongo in modo generale, ma la situazione attuale è quella della figura che vi trasmetto.
ho un range di R righe e C colonne che devo ordinare
l'importazione dei dati da web si presenta come in colonne B-H.

Immagine

ordinando il range devo ottenere il risultato di colonne J-P
ad esempio, la riga completa 171, con la sua successiva, di B-H si trovano alla fine di J-P, e così per le altre coppie di righe
il risultato ordinato deve trovarsi nelle stesse colonne iniziali B-H, ma se questo crea problemi va bene un qualunque altro
range di colonne
non riesco ad individuare un criterio, e di conseguenza la relativa macro, per ottenere il risultato.
ciao, grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 517
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: sort range particolare

Postdi Anthony47 » 21/06/22 22:42

Il criterio in questi casi e’ “Shit in-Shit out”, cioe’ in uscita hai la cacca che si trova in input

Dando per certo che quelle stringhe non sono in formato "Data" ma puro testo (per cui un ordinamento metterebbe in ordine crescente Dom, Lun, Sab) il mio suggerimento e’ di creare due nuove colonne che saranno poi alla base del tuo ordinamento.
Ad esempio in J2 e K2 (se i tuoi dati cominciano da riga 2) metti rispettivamente le formule
Codice: Seleziona tutto
=SE(LUNGHEZZA(C2)>10;DATA.VALORE(STRINGA.ESTRAI(C2;4;LUNGHEZZA(C2)-4));DATA.VALORE(STRINGA.ESTRAI(C1;4;LUNGHEZZA(C1)-4)))

Codice: Seleziona tutto
=SE(LUNGHEZZA(C2)>10;"A";"B")

Creerai cioe’ un elenco del tipo
Codice: Seleziona tutto
20-06-2022     A
20-06-2022     B
19-06-2022     A
19-06-2022     B
18-06-2022     A
18-06-2022     B

Userai poi queste due colonne per ordinare in un modo o nell’altro

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: sort range particolare

Postdi miko » 22/06/22 04:07

buongiorno,
ho provato ad inserire le formule, ma per la prima quella lunga da inserire in J2,
ottengo il risultato: "#VALORE"
mentre per la seconda ottengo A oppure B come avevi previsto.
le celle di colonna C, cosi anche tutte le altre, sono in formato GENERALE, secondo quanto mi risulta da excel.
e' possibile realizzare una macro?
ciao, grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 517
Iscritto il: 29/12/09 10:44

Re: sort range particolare

Postdi Marius44 » 22/06/22 06:31

Salve a tutti
Prova con questa macro (da associare ad un pulsante non ActiveX)
Codice: Seleziona tutto
Option Explicit

Sub Ordina()
Dim ur As Long, i As Long
Dim dt As String
ur = Cells(Rows.Count, 3).End(xlUp).Row
For i = 2 To ur
  dt = Mid(Cells(i, 3), 5, 10)
  If Len(dt) > 6 Then
    Cells(i, 1) = dt
  Else
    Cells(i, 1) = Cells(i - 1, 1)
  End If
Next i
'ordinamento
ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Add Key:=Range("A2:A" & ur) _
  , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Foglio1").Sort
  .SetRange Range("A2:H" & ur)
  .Header = xlGuess
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
End With
Range("A2:A" & ur).ClearContents
Range("I1").Select
End Sub


Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 587
Iscritto il: 07/09/15 22:00

Re: sort range particolare

Postdi Anthony47 » 22/06/22 13:56

Mi permetto di suggerire 2 modifiche alla macro di Mario, su questa area:
Codice: Seleziona tutto
For i = 2 To ur
  dt = Mid(Cells(i, 3), 5, 10)
  If Len(dt) > 6 Then
    Cells(i, 1) = CDate(dt)                 '1
  Else
    Cells(i, 1) = Cells(i - 1, 1) + 0.01    '2
  End If
Next i

Senza la (1) stringhe del tipo Dom 12/06/2022 probabilmente verrebbero tradotte come 6-dicembre-2022; mentre la 2 assicura che la riga "extra" nell'ordinamento "crescente" figuri certamente dopo la riga base

Quanto alla formula che restituisce #VALORE la mia ipotesi e' che i dati non comincino su riga 2; ma oramai non ha senso indagare vista la preferenza per la macro e la relativa soluzione proposta da Mario

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 18436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: sort range particolare

Postdi miko » 26/06/22 04:06

Buona domenica a tutti,
solo ora ho trovato il tempo di testare la macro di mario con i suggerimenti di anthony.
tutto funziona perfettamente, grazie ad entrambi
saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 517
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "sort range particolare":


Chi c’è in linea

Visitano il forum: Nessuno e 79 ospiti