.16/08/16
Buenas noches, Herman
Espero haberte entendido correctamente.
En tal caso, activa el editor de Visual Basic (atajo: Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:
Sub InsTit()
'Indica la celda donde empiezan los títulos/encabezados
CeldaIniTit = "A1"
Set RangTit = Range(CeldaIniTit, Range(CeldaIniTit).Offset(0, Range(CeldaIniTit).CurrentRegion.Columns.Count - 1))
UltFila = RangTit.CurrentRegion.Rows.Count
Range(CeldaIniTit).Select
' ordenamiento previo de la base:
RangTit.CurrentRegion.Sort Key1:=Range(CeldaIniTit), Order1:=xlAscending, Header:=xlYes
'Rutina de insertar filas en blanco:
For FilaAct = 2 To UltFila
KEYsep = Range(CeldaIniTit).Offset(FilaAct - 1)
If Range(CeldaIniTit).Offset(FilaAct) <> KEYsep Then
Range(CeldaIniTit).Offset(FilaAct).EntireRow.Insert xlDown
Range(CeldaIniTit).Offset(FilaAct).EntireRow.Insert xlDown
RangTit.Copy Range(CeldaIniTit).Offset(FilaAct + 1)
UltFila = UltFila + 2
FilaAct = FilaAct + 2
End If
Next
Set RangTit = Nothing
End Sub
Bien, verás que sólo debes indicar cuál es la celda donde inicia la base y, espero, estén los nombres de los proveedores.
La rutina luego se encarga de ordenar la base y de hacer las separaciones que solicitabas en tu pregunta.
A fin de evitar problemas, te sugiero que pruebes la rutina en una copia de tu hoja y veas si funcionó como esperabas.
En tal caso, espero tu devolución y la calificación que creas merece mi respuesta.
Si no, antes de valuarla, comentame qué inconveniente encontraste.
Un abrazo
Fernando
(Buenos Aires, Argentina)
.