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

#1 Insumos
26/04/2007 - 00:37 | Informe spam
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
#2 LUIS DANNY SALAS
26/04/2007 - 21:34 | Informe spam
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
#3 Insumos
26/04/2007 - 23:40 | Informe spam
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
#4 LUIS DANNY SALAS
30/04/2007 - 23:40 | Informe spam
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
#5 Insumos
03/05/2007 - 01:55 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida