Poner Direcciones las Hojas de trabajo estatales específicos

August 31

Linda tiene una hoja de cálculo que contiene 250 direcciones de todo el país. Ella quiere separar las direcciones, por estado, a diferentes hojas de trabajo para que cada hoja de trabajo contiene direcciones sólo de un estado específico.

No hay manera de hacer esto con cualquiera de las funciones o magos Excel incorporadas. Esto es probablemente un reflejo del hecho de que la mayoría de la gente deja los datos en una sola hoja de cálculo, y luego usar varias herramientas de Excel (como el filtrado) para mostrar sólo un subconjunto de los datos globales.

Si desea copiar la información específica de cada estado a hojas separadas, sin embargo, puede hacerlo de forma manual mediante el uso de Autofiltro. Esto funciona especialmente bien si usted tiene sólo unos pocos estados en sus fuentes de datos. Basta con aplicar un Autofiltro y muestra sólo las filas que se encuentran en el estado que desea copiar. Seleccione las filas visibles, copiarlos y pegarlos en una nueva hoja de cálculo. Repita el proceso con cada uno de los otros estados en su conjunto de datos original.

Si tiene datos para un buen número de hojas, se puede copiar mediante la automatización de este proceso. La siguiente macro utilizará las capacidades de Autofiltro de Excel para copiar la información a una hoja de cálculo nueva. Se hace esto para cada valor único en la columna de estado, que se especifica en la variable de iCol. (En este ejemplo, iCol se establece en 5, lo que significa que los estados están en la columna E.)

Sub NewSheetEachAutofilter ()
Dim Wori como hoja de trabajo
Semanas dévil como hoja de trabajo
Dim WPT como hoja de trabajo
Dim bAutoFilter As Boolean
Dim PT Como tabla dinámica
Dim rPT como gama
Dim rCell como gama
Dim iCol As Integer
Dim Sheader As String

On Error GoTo errhandler
Application.ScreenUpdating = False
iCol = 5 'Filtra todos en Col E

Establecer Wori = ActiveSheet
Con Wori
'Status Guardar Autofilter
bAutoFilter = .AutoFilterMode
Si No bAutoFilter Entonces 'encender autofilter
.Range ("A1"). Autofiltro
End If
Si .FilterMode Entonces .ShowAllData

'Utilizar una tabla dinámica en una temp
'Hoja para obtener una lista única
Set PT = .PivotTableWizard _
(SourceType: = xlDatabase, _
SourceData:.. = Range ("A1") CurrentRegion, _
TableDestination: = "", _
TableName: = "PivotTable1")
Sheader = .Cells (1, iCol)
Con PT
.AddFields RowFields: = Sheader
.PivotFields (Sheader) .Orientation = xlDataField
.ColumnGrand = False
End With
Establecer WPT = ActiveSheet
Con WPT
Set rPT = .Range (.Range ("A3"), _
.Cells (.Cells.Rows.Count, 1) .End (xlUp))
End With

'Bucle a través de la lista única
Para Cada rCell En rPT
.Range ("A1") Autofiltro campo:. = ICol, _
Criteria1: = rCell.Value
'Crear nueva hoja y el nombre con el estado
Establecer semanas = Worksheets.Add
wks.Name = rCell.Value
.AutoFilter.Range.Copy Wks.Range ("A1")
Siguiente
.ShowAllData
.Seleccionar
End With
Application.DisplayAlerts = False
wPT.Delete

ExitHandler:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'Quitar el filtro si nadie anterior
Si No bAutoFilter Entonces
wOri.AutoFilterMode = False
End If
Establecer rCell = Nothing
Set rPT = Nothing
Set PT = Nothing
Establecer Wori = Nothing
Establecer WKS = Nothing
Establecer WPT = Nothing
Exit Sub

Errhandler:
MsgBox Err.Number & ":" & Err.Description
Reanudar ExitHandler
End Sub

El código puede parecer algo complicada debido a su longitud, pero no es particularmente difícil. Se asegura de que el Autofiltro está activado, y luego crea una tabla dinámica basada en los datos originales. Esta tabla dinámica se utiliza para recopilar la lista de los estados de los datos. Cada estado se utiliza en los datos originales como un criterio de filtrado. La información filtrada luego se copia en una nueva hoja de cálculo que se nombra con el estado.

La macro no modifica los datos originales. Si usted prefiere tener los datos originales borrados después de que se mudó a una hoja de trabajo, entonces todo lo que necesita hacer es agregar una sola línea de código. Añade esta línea después de la línea que elimina la tabla dinámica (wPT.Delete):

wOri.Delete

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (3383) se aplica a Microsoft Excel 97, 2000, 2002, y 2003. Usted puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y versiones posteriores) aquí: Putting Discursos con hojas de trabajo estatales específicos.