AYUDA CON MACRO

26/04/2007 - 01:46 por LUIS DANNY SALAS | Informe spam
Hola gracias a todos, tengo en realidad una duda:

Que instruccion debo poner en una macro para que seleccion y copie solo las
celdas que tienen valores en un determinado rango? y que las que tiene valor
cero o en blanco no las copie.
gracias

Preguntas similare

Leer las respuestas

#6 LUIS DANNY SALAS
09/05/2007 - 04:53 | Informe spam
gracias, la idea es en realidad que la macro hago todo de una vez con solo
apretar un boton.

"Insumos" wrote in message
news:
Hola Luis:

No entiendo bien el problema, ya que la macro pega las celdas que copia a
partir de la celda activa, asi que (si entendí bien) el problema se
solucionaría (en el caso del ejemplo que das) si PRIMERO te posicionas en


la
celda E94 y LUEGO ejecutas la macro.
Saludos!!

"LUIS DANNY SALAS" escribió en el mensaje
news:#KFRD$
> MUCHAS GRACIAS ! me sirvio mucho, sin embargo a la hora de pegar se me
> presento otro problema:
> debo pegar esos valores en unas celdas que previamente han sido


filtradas,
> me explico:
>
> tengo una base de datos con el numero de carnet el nivel y la seccion de
> todos los estudiantes del colegio, la macro debe filtrar a los


estudiantes
> de cierto nivel y cierta seccion, hasta ahi no hay problema
>
> por ejemplo necesito que filtre la lista de la seccion 10- A
> al darle filtrar me aparece la lista asi:
>
> A B C D E
> 1 carnet nivel seccion nota
> 94 204020 10 A
> 95 203920 10 A
> 96 209290 10 A
> 97 290902 10 A
>
> las filas entre A1 y A94 fueron ocultadas ya que contienen estudiantes
de
> otra seccion, lo que yo necesito es que la macro tenga la instruccion de
> irse a la celda E 94 para que pegue los valores de las notas, pero no
puedo
> usar la instruccion : Range("E94").Select por que cuando sea otra


lista
la
> que haya filtrado por decir cualquier cosa : la seccion 10 - B la primer
> celda filtrada de la lista no sea la E94 si no cualquier otra,
> lo que necesito es una instruccion que le indique a la macro irse a la
> primer celda de la lista filtrada y que en este ejemplo reconozca que es
la
> E94 pero que si fuera otra lista que igual reconozca la primer celda de
esa
> lista filtrada para poder pegar ahi la columna de notas de esa seccion.
> Muchisimas gracias estare eternamente agradecido si alguien puede
brindarme
> ayuda.
>
>
>
>
>
> "Insumos" wrote in message
> news:
> > Hola Luis:
> >
> > Es esto lo que quieres (según los datos de tu ejemplo) ? Acordate de
> > reemplazar Hoja1 por el nombre de TU hoja de trabajo.
> >
> > Sub copiar()
> >
> > Dim celda As Range
> >
> > With Worksheets("Hoja1")
> > If .[A1] <> "" Then
> > For Each celda In .Range("A1:A" & .[A65536].End(xlUp).Row)
> > If celda <> "" Then
> > celda.Copy
> > ActiveCell.PasteSpecial xlPasteAll
> > ActiveCell.Offset(1, 0).Activate
> > End If
> > Next
> > End If
> > End With
> >
> > End Sub
> >
> > Saludos!!
> >
> >
> > "LUIS DANNY SALAS" escribió en el mensaje
> > news:
> > > Trate y me da errores, no se como hacerlo la verdad, lo que quiero


es
> que
> > > la macro solo seleccione(y luego copie) las celdas que tienen


valores
> > > diferentes de cero en un rango determinado asi:
> > >
> > >
> > > A1 2
> > > A2 3
> > > A3 4
> > > A4 5
> > > A5 0
> > > A6
> > >
> > > la idea es que en el rango( A1:A6) solo seleccione las celdas de la


A1
a
> > la
> > > A5 ( que son las que tienen datos ) las copie y luego las pueda yo
pegar
> > en
> > > cualquier otra parte, te agradezco si me pueden ayudar con las
> > instrccuines
> > > concretas en un ejemplo particular.
> > > muchas gracias.
> > >
> > >
> > >
> > > "Insumos" wrote in message
> > > news:
> > > > Hola Luis:
> > > >
> > > > No se bien en que contexto estas utilizando la macro y con que
rango,
> > pero
> > > > calculo que debes usar un condicional del tipo:
> > > > If celda = "" Then celda.Copy
> > > > o sino
> > > > If celda = Empty Then celda.Copy
> > > > o sino
> > > > Select Case celda
> > > > Case Is = ""
> > > > celda.Copy
> > > > End Select
> > > >
> > > > Si lo que quieres es que funcione en un rango, puede ser algo


como:
> > > > Dim celda As Range
> > > > For Each celda In .Range("A1:A20")
> > > > If celda = "" Then celda.Copy
> > > > Next
> > > >
> > > > Espero te haya servido!!
> > > > Saludos
> > > >
> > > >
> > > > "LUIS DANNY SALAS" escribió en el mensaje
> > > > news:OcPW$
> > > > > Hola gracias a todos, tengo en realidad una duda:
> > > > >
> > > > > Que instruccion debo poner en una macro para que seleccion y


copie
> > solo
> > > > las
> > > > > celdas que tienen valores en un determinado rango? y que las que
> tiene
> > > > valor
> > > > > cero o en blanco no las copie.
> > > > > gracias
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Insumos
10/05/2007 - 01:16 | Informe spam
Hola Luis:

Creo entender la cuestión, pero no se cómo hacer para que el código
"reconozca" cual es la última celda que se ve visible luego de aplicar un
filtro (asumo que estas usando un AutoFilter?). Mi consejo es que abras una
nueva exposición y preguntes acá en el foro si alguien sabe como hacerlo en
base al código que estas usando.
Se me ocurre también que tal vez una mejor opción es incorporar filtros
avanzados a la macro (AdvancedFilters) y directamente que la macro te cree
un reporte de acuerdo al parámetro ingresado. El AdvancedFilter es mejor que
el AutoFilter para estas cuestiones. Para eso también te conviene postear la
cuestión en el foro para que los expertos en la materia te puedan ayudar.
Espero haber sido de ayuda!
Saludos.

Mariano


"LUIS DANNY SALAS" escribió en el mensaje
news:
gracias, la idea es en realidad que la macro hago todo de una vez con solo
apretar un boton.

"Insumos" wrote in message
news:
> Hola Luis:
>
> No entiendo bien el problema, ya que la macro pega las celdas que copia


a
> partir de la celda activa, asi que (si entendí bien) el problema se
> solucionaría (en el caso del ejemplo que das) si PRIMERO te posicionas


en
la
> celda E94 y LUEGO ejecutas la macro.
> Saludos!!
>
> "LUIS DANNY SALAS" escribió en el mensaje
> news:#KFRD$
> > MUCHAS GRACIAS ! me sirvio mucho, sin embargo a la hora de pegar se me
> > presento otro problema:
> > debo pegar esos valores en unas celdas que previamente han sido
filtradas,
> > me explico:
> >
> > tengo una base de datos con el numero de carnet el nivel y la seccion


de
> > todos los estudiantes del colegio, la macro debe filtrar a los
estudiantes
> > de cierto nivel y cierta seccion, hasta ahi no hay problema
> >
> > por ejemplo necesito que filtre la lista de la seccion 10- A
> > al darle filtrar me aparece la lista asi:
> >
> > A B C D E
> > 1 carnet nivel seccion nota
> > 94 204020 10 A
> > 95 203920 10 A
> > 96 209290 10 A
> > 97 290902 10 A
> >
> > las filas entre A1 y A94 fueron ocultadas ya que contienen


estudiantes
> de
> > otra seccion, lo que yo necesito es que la macro tenga la instruccion


de
> > irse a la celda E 94 para que pegue los valores de las notas, pero no
> puedo
> > usar la instruccion : Range("E94").Select por que cuando sea otra
lista
> la
> > que haya filtrado por decir cualquier cosa : la seccion 10 - B la


primer
> > celda filtrada de la lista no sea la E94 si no cualquier otra,
> > lo que necesito es una instruccion que le indique a la macro irse a la
> > primer celda de la lista filtrada y que en este ejemplo reconozca que


es
> la
> > E94 pero que si fuera otra lista que igual reconozca la primer celda


de
> esa
> > lista filtrada para poder pegar ahi la columna de notas de esa


seccion.
> > Muchisimas gracias estare eternamente agradecido si alguien puede
> brindarme
> > ayuda.
> >
> >
> >
> >
> >
> > "Insumos" wrote in message
> > news:
> > > Hola Luis:
> > >
> > > Es esto lo que quieres (según los datos de tu ejemplo) ? Acordate de
> > > reemplazar Hoja1 por el nombre de TU hoja de trabajo.
> > >
> > > Sub copiar()
> > >
> > > Dim celda As Range
> > >
> > > With Worksheets("Hoja1")
> > > If .[A1] <> "" Then
> > > For Each celda In .Range("A1:A" & .[A65536].End(xlUp).Row)
> > > If celda <> "" Then
> > > celda.Copy
> > > ActiveCell.PasteSpecial xlPasteAll
> > > ActiveCell.Offset(1, 0).Activate
> > > End If
> > > Next
> > > End If
> > > End With
> > >
> > > End Sub
> > >
> > > Saludos!!
> > >
> > >
> > > "LUIS DANNY SALAS" escribió en el mensaje
> > > news:
> > > > Trate y me da errores, no se como hacerlo la verdad, lo que


quiero
es
> > que
> > > > la macro solo seleccione(y luego copie) las celdas que tienen
valores
> > > > diferentes de cero en un rango determinado asi:
> > > >
> > > >
> > > > A1 2
> > > > A2 3
> > > > A3 4
> > > > A4 5
> > > > A5 0
> > > > A6
> > > >
> > > > la idea es que en el rango( A1:A6) solo seleccione las celdas de


la
A1
> a
> > > la
> > > > A5 ( que son las que tienen datos ) las copie y luego las pueda yo
> pegar
> > > en
> > > > cualquier otra parte, te agradezco si me pueden ayudar con las
> > > instrccuines
> > > > concretas en un ejemplo particular.
> > > > muchas gracias.
> > > >
> > > >
> > > >
> > > > "Insumos" wrote in message
> > > > news:
> > > > > Hola Luis:
> > > > >
> > > > > No se bien en que contexto estas utilizando la macro y con que
> rango,
> > > pero
> > > > > calculo que debes usar un condicional del tipo:
> > > > > If celda = "" Then celda.Copy
> > > > > o sino
> > > > > If celda = Empty Then celda.Copy
> > > > > o sino
> > > > > Select Case celda
> > > > > Case Is = ""
> > > > > celda.Copy
> > > > > End Select
> > > > >
> > > > > Si lo que quieres es que funcione en un rango, puede ser algo
como:
> > > > > Dim celda As Range
> > > > > For Each celda In .Range("A1:A20")
> > > > > If celda = "" Then celda.Copy
> > > > > Next
> > > > >
> > > > > Espero te haya servido!!
> > > > > Saludos
> > > > >
> > > > >
> > > > > "LUIS DANNY SALAS" escribió en el mensaje
> > > > > news:OcPW$
> > > > > > Hola gracias a todos, tengo en realidad una duda:
> > > > > >
> > > > > > Que instruccion debo poner en una macro para que seleccion y
copie
> > > solo
> > > > > las
> > > > > > celdas que tienen valores en un determinado rango? y que las


que
> > tiene
> > > > > valor
> > > > > > cero o en blanco no las copie.
> > > > > > gracias
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida