Hola que tal buenas tardes, reciban un cordial saludo!!
Hace unas semanas Hecto me hizo el favor de darme estos pasos para
poder copiar varias columnas en base a un filtro,, estos paso que me
hizo favor de darme copia columnas de 3 en 3 una de bajo de otra, en
base a un filtro y pone unos titulos entre ellos.
Ahora bien por lo que recurre nuevamente a ustedes es siguiendo con la
misma idea
¿como copiar de 3 columnas en 3 con su respectivo titulo una debajo de
la otra (dentro de este mismo codigo)pero sin tomar en cuenta el
filtro?
Tratando de ser un poco mas explicito necesito copiar al final de lo
que ya hizo el codigo las columna AH a la columna AM apartir de la
fila 5 (las primeras 4 columnas continen encabezados) igual con sus
respectivos titulos pero sin tomar en cuenta el filtro,, un breve
ejemplo:
F G H I J K J... AH AI AJ AK AL AM
5 BOS 0 1 2 3 4 5... 6 7 8 9 10 11
6 BOS 0 1 2 3 4 5... 6 7 8 9 10 11
7 BOS 0 1 2 3 4 5... 6 7 8 9 10 11
8 GUA A C D E F G... K L M N O P
9 GUA A C D E F G... K L M N O P
10 Q R S T U V
11 Q R S T U V
12 Q R S T U V
13 Q R S T U V
14 Q R S T U V
15 Q R S T U V
Lo que deberia salir seria lo siguiente:
Titulo1
0 1 2
0 1 2
0 1 2
Titulo 2
3 4 5
3 4 5
3 4 5
...
Titulo 6
6 7 8
6 7 8
6 7 8
K L M
K L M
Q R S
Q R S
Q R S
Q R S
Q R S
Q R S
Titulo 7
9 10 11
9 10 11
9 10 11
N O P
N O P
T U V
T U V
T U V
T U V
T U V
T U V
como se daran cuenta los datos de titulo 1, titulo2 hasta titulo 5
(que es donde llegan) copia unicamente los datos en base al filtro
seleccionado ,, en este caso Bos y los titulos 6 y 7 copia todo lo
que alla en sus respectivas columnas sin tomar en cuenta el filtro,,
Ojala me haya explicado,, por favor alguien me pudiera ayudar a
terminar el codigito???
De antemano muchas gracias,,, Saludos!!!!
-> puedes evitar la necesidad del combobox [como objeto incrustado] y
su codigo de 'relleno' [entre otras cosas] si...
a) asegurate que en tu hoja 'mydata' tienes libre la columna 'AG' para
extraer por filtros avanzados los 'unicos' de la columna 'F'
b) asigna/define/crea/... un nombre para ese rango [p.e. Listado],
seleccionando primero la celda 'AG5', con [+/-] la siguiente formula:
=desref($ag$5,,,coincidir("zzzzz",$ag:$ag)-4,) <= excel
completara los rangos con el nombre de la hoja ;)
c) usa [menu] datos / validacion / lista / formula y estableces
como origen de la lista 'el nombre' -> =listado
[p.e. en la celda 'A2' de la hoja 'reportes'] <= es la que uso en
el codigo de ejemplo
-> sustituye al combo/objeto y el evento '_change' de esa hoja
realiza las acciones que solicitas :))
OJO: se requiere excel 2000 en adelante para que se dispare el
evento en listas de validacion que se toman de rangos <= OJO
d) asegurate que la celda 'A6' en tu hoja de reportes NO esta
'vacia' [para que el codigo se pueda 'mover' de ahi en
adelante] :))
copia/pega las siguientes lineas en el modulo de codigo de cada hoja
y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
[MyData]
Private Sub Worksheet_Deactivate()
Range(Range("f4"), Range("f65536").End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range("ag4"), Unique:=True
Range("ag4").Sort Key1:=Range("ag5"), Order1:=xlAscending,
Header:=xlYes
End Sub
[Reportes]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Col As Byte: Application.ScreenUpdating = False
If Target.Address <> "$A$2" Then Exit Sub Else
Range("a7:c1000").ClearContents
With Worksheets("PRORRATEO"): If .AutoFilterMode
Then .Cells.AutoFilter
.Range("f4").AutoFilter Field:=1, Criteria1:=Range("a2")
For Col = 10 To 22 Step 3
Range("a65536").End(xlUp).Offset(1) = _
Application.Choose(((Col - 1) / 3) - 2, "Costs", "Rent",
"Local", "Phone", "Others")
With .AutoFilter.Range
With .Offset(1, Col).Resize(.Rows.Count - 1, 3)
.Copy Range("a65536").End(xlUp).Offset(1)
End With: End With: Next: .Range("f4").AutoFilter
End With: x = UsedRange.Rows.Count
End Sub
1) los filtros avanzados los 'maneja' el codigo [tu solo asegurate que
la columna 'AG' de la hoja 'mydata' esta libre] ;)
2) la creacion del nombre [p.e. Listado] es en la misma hoja 'mydata'
seleccionando primero la celda 'AG5' [se llena por codigo]
a) creas el nombre 'estando parado' en la celda 'AG5' de la hoja
'mydata' con la formula propuesta...
b) vas a la hoja de reportes y en la celda 'A2' aplicas reglas de
validacion por lista usando el nombre que creaste en el paso anterior
Leer las respuestas