¿Cómo usar VBA en Excel para dividir dos hojas de trabajo de un libro en varios libros de acuerdo con una columna determinada?
Ahora entiendo que todos los departamentos están en la columna A y solo hay una línea en el encabezado. El código es el siguiente:
El siguiente texto es solo como referencia. y el navegador puede robar caracteres:
Opción explícita
Sub split()
Dim depts, dept, arr, i, j, st, wb, st2
Establecer departamentos = CreateObject("scripting.dictionary")
'Primer escaneo, obtenga una lista de todos los departamentos
Para cada punto en hojas
arr = st .UsedRange
Para i = 2 a UBound(arr)
depto = Trim(arr(i, 1))
Si departamento <> "" Entonces departamentos(depto) = True
Siguiente i
Siguiente st
'Segundo análisis, produzca archivos de cada departamento
Establecer wb = ThisWorkbook
Para cada departamento en depts.keys
Con Workbooks.Add
Para cada st en wb.Sheets
arr = st.UsedRange
Establecer st2 = .Sheets.Add(after:=.Sheets(.Sheets.Count))
st2.Name = st.Name
j = 0
Para i = 1 a UBound(arr)
Si i = 1 o Trim(arr(i, 1)) = departamento entonces
j = j + 1
st.Rows(i).Copiar st2.Rows(j)
Finalizar si
Siguiente i
Siguiente paso
.Guardar como wb.FullName & "." & dept & ".xlsx"
.Cerrar
Fin Con
Siguiente departamento
Fin Sub