Excel e gli applicativi Microsoft Office Ordinamento con celle unite

Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #695 Score: 0 | Risposta

    marco_budin
    Partecipante
      2 pts
      Buona sera a tutti,
      ho creato un Excel, dove inserisco dei valori, nome/ data di nascita/… come si può vedere nell'esempio le prime caselle sono unite… perchè esempio la colonna E2-4 appartiene al signore marco (unito B2-4).
      Se ad esempio metto in ordine alfabetico per nome dovrebbe riconoscere che deve ritenere le righe da 2-4 come se fosse un unica riga appartenente alla stessa persona.
      Ce un modo per ordinare in questo modo? bloccando le righe? dicendo che quelle righe sono da ritenere una sola?
      ringrazio tutti per l'aiuto, saluti
      Marco
      Allegati:
      You must be logged in to view attached files.
      #745 Score: 0 | Risposta

      Marius44
      Moderatore
        58 pts
        Ciao
        Prova con questa macro
        Sub ordina()
        ur = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1
        With ActiveSheet.UsedRange
        For Each cell In .Cells
        With cell
        a = .MergeArea.Cells(1, 1).Value
        If .MergeCells = True Then
        n = .MergeArea.Cells.Rows.Count
        .UnMerge
        For i = .Row To .Row + n - 1
        Cells(i, cell.Column).Value = a
        Next i
        End If
        a = ""
        End With
        Next cell
        End With
        'ordina per nome
        Range("A1:H" & ur).Select
        Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'ripristina celle unite
        Application.DisplayAlerts = False
        b = 0
        For i = 2 To ur - 1
        If Cells(i, 2) = Cells(i + 1, 2) Then
        b = b + 1
        ElseIf Cells(i, 2) <> Cells(i + 1, 2) Then
        Range(Cells(i - b, 2), Cells(i, 2)).Merge
        Range(Cells(i - b, 1), Cells(i, 1)).Merge
        Range(Cells(i - b, 3), Cells(i, 3)).Merge
        Range(Cells(i - b, 4), Cells(i, 4)).Merge
        b = 0
        End If
        Next i
        Application.DisplayAlerts = True
        End Sub
        Fai sapere. Ciao,
        Mario
        • Questa risposta è stata modificata 8 anni fa da  Marius44.
        #1834 Score: 0 | Risposta

        marco_budin
        Partecipante
          2 pts
          Buona sera mario.
          Scusami per il ritardo, ma ero in vacanza.
          Funziona
          Grazie mille
          #32223 Score: 0 | Risposta

          Stefano

            Marius44 dove va inserita la macro? grazie

             

          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: Ordinamento con celle unite
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: