Seleccionar area por favor

22/08/2006 - 14:39 por Jonathan Milla | Informe spam
Por favor quisiera poder seleccionar de un rango fijo, solo las celdas que
tengan
valor diferente a 999.
Ejemplo:
A B C
1 2 alfa 50
2 1 beta 120
3 4 charly 52
4 999
5 999


Quisiera que solo seleccionara de A1:C3
Y si luego A4 tuviera valor diferente a 999 pues seleccionar A1:C4

Se los agradezco bastante.

Preguntas similare

Leer las respuestas

#1 David
22/08/2006 - 16:25 | Informe spam
Hla, Jonathan. Sólo algo que no comentaste: ¿Para qué las quieres
seleccionar? ¿Para copiarlas? ¿Y qué si hay números 999 en medio de tus
filas?

Si quisieras seleccionar "hasta" encontrar el primer 999, podrías recorrer
la columna A, y al encontrar este valor, detenerte y seleccionar el rango.
Algo como esto:

Sub Seleccionar1()
Dim Fila, Seguir As Boolean, Rango As String
Fila = 1: Seguir = True
Do
If Len(Cells(Fila, 1)) = 0 Then
Seguir = False
Else
If Cells(Fila, 1) = 999 Then Seguir = False Else Fila = Fila + 1
End If
Loop While Seguir
Range("A1:C" & Fila - 1).Select
End Sub

Ahora, si hubieran celdas con 999 entre los datos, el problema se complica
bastante. En ese caso, te sugeriría pensar en alternativas. Una opción,
podría ser buscar las celdas con el valor 999 y aplicarles un alto de fila
cero. Luego seleccionas el rango y ejecutas un "ir a - especial" para
seleccionar las celdas visibles. Algo como esto:

Sub Seleccionar2()
Dim Fila As Integer, Seguir As Boolean
Fila = 1: Seguir = True
Do
If Len(Cells(Fila, 1)) = 0 Then
Seguir = False
Else
If Cells(Fila, 1) = 999 Then Cells(Fila, 1).RowHeight = 0
Fila = Fila + 1
End If
Loop While Seguir
Range("A1:C" & Fila - 1).Select
Selection.SpecialCells(xlCellTypeVisible).Select
End Sub

Y luego podrías restaurar los altos de fila:

Sub Restaurar()
Range("1:65536").Select
Selection.EntireRow.Hidden = False
Range("A1").Select
End Sub

Espero que estas ideas te sean útiles. Si no, ampía un poco tu consulta y
veremos... ;-)

Saludos.



"Jonathan Milla" escribió:

Por favor quisiera poder seleccionar de un rango fijo, solo las celdas que
tengan
valor diferente a 999.
Ejemplo:
A B C
1 2 alfa 50
2 1 beta 120
3 4 charly 52
4 999
5 999


Quisiera que solo seleccionara de A1:C3
Y si luego A4 tuviera valor diferente a 999 pues seleccionar A1:C4

Se los agradezco bastante.




Respuesta Responder a este mensaje
#2 David
22/08/2006 - 16:38 | Informe spam
Perdón. Corrijo un error en el anterior post.

Fila debe ser declarada como entera en el primer procedimiento. Las
primeras líneas quedarían así:

Sub Seleccionar1()
Dim Fila AS INTEGER, Seguir As Boolean, Rango As String
Fila = 1: Seguir = True



"David" escribió:

Hla, Jonathan. Sólo algo que no comentaste: ¿Para qué las quieres
seleccionar? ¿Para copiarlas? ¿Y qué si hay números 999 en medio de tus
filas?

Si quisieras seleccionar "hasta" encontrar el primer 999, podrías recorrer
la columna A, y al encontrar este valor, detenerte y seleccionar el rango.
Algo como esto:

Sub Seleccionar1()
Dim Fila, Seguir As Boolean, Rango As String
Fila = 1: Seguir = True
Do
If Len(Cells(Fila, 1)) = 0 Then
Seguir = False
Else
If Cells(Fila, 1) = 999 Then Seguir = False Else Fila = Fila + 1
End If
Loop While Seguir
Range("A1:C" & Fila - 1).Select
End Sub

Ahora, si hubieran celdas con 999 entre los datos, el problema se complica
bastante. En ese caso, te sugeriría pensar en alternativas. Una opción,
podría ser buscar las celdas con el valor 999 y aplicarles un alto de fila
cero. Luego seleccionas el rango y ejecutas un "ir a - especial" para
seleccionar las celdas visibles. Algo como esto:

Sub Seleccionar2()
Dim Fila As Integer, Seguir As Boolean
Fila = 1: Seguir = True
Do
If Len(Cells(Fila, 1)) = 0 Then
Seguir = False
Else
If Cells(Fila, 1) = 999 Then Cells(Fila, 1).RowHeight = 0
Fila = Fila + 1
End If
Loop While Seguir
Range("A1:C" & Fila - 1).Select
Selection.SpecialCells(xlCellTypeVisible).Select
End Sub

Y luego podrías restaurar los altos de fila:

Sub Restaurar()
Range("1:65536").Select
Selection.EntireRow.Hidden = False
Range("A1").Select
End Sub

Espero que estas ideas te sean útiles. Si no, ampía un poco tu consulta y
veremos... ;-)

Saludos.



"Jonathan Milla" escribió:

> Por favor quisiera poder seleccionar de un rango fijo, solo las celdas que
> tengan
> valor diferente a 999.
> Ejemplo:
> A B C
> 1 2 alfa 50
> 2 1 beta 120
> 3 4 charly 52
> 4 999
> 5 999
>
>
> Quisiera que solo seleccionara de A1:C3
> Y si luego A4 tuviera valor diferente a 999 pues seleccionar A1:C4
>
> Se los agradezco bastante.
>
>
>
>
Respuesta Responder a este mensaje
#3 Jonathan Milla
22/08/2006 - 17:07 | Informe spam
Muchas gracias David, tambien funciona, te lo agradezco bastante



"David" <sdgm04(QuitaEsto)@hotmail.com> escribió en el mensaje
news:
Perdón. Corrijo un error en el anterior post.

Fila debe ser declarada como entera en el primer procedimiento. Las
primeras líneas quedarían así:

Sub Seleccionar1()
Dim Fila AS INTEGER, Seguir As Boolean, Rango As String
Fila = 1: Seguir = True



"David" escribió:

Hla, Jonathan. Sólo algo que no comentaste: ¿Para qué las quieres
seleccionar? ¿Para copiarlas? ¿Y qué si hay números 999 en medio de tus
filas?

Si quisieras seleccionar "hasta" encontrar el primer 999, podrías
recorrer
la columna A, y al encontrar este valor, detenerte y seleccionar el
rango.
Algo como esto:

Sub Seleccionar1()
Dim Fila, Seguir As Boolean, Rango As String
Fila = 1: Seguir = True
Do
If Len(Cells(Fila, 1)) = 0 Then
Seguir = False
Else
If Cells(Fila, 1) = 999 Then Seguir = False Else Fila = Fila
+ 1
End If
Loop While Seguir
Range("A1:C" & Fila - 1).Select
End Sub

Ahora, si hubieran celdas con 999 entre los datos, el problema se
complica
bastante. En ese caso, te sugeriría pensar en alternativas. Una opción,
podría ser buscar las celdas con el valor 999 y aplicarles un alto de
fila
cero. Luego seleccionas el rango y ejecutas un "ir a - especial" para
seleccionar las celdas visibles. Algo como esto:

Sub Seleccionar2()
Dim Fila As Integer, Seguir As Boolean
Fila = 1: Seguir = True
Do
If Len(Cells(Fila, 1)) = 0 Then
Seguir = False
Else
If Cells(Fila, 1) = 999 Then Cells(Fila, 1).RowHeight = 0
Fila = Fila + 1
End If
Loop While Seguir
Range("A1:C" & Fila - 1).Select
Selection.SpecialCells(xlCellTypeVisible).Select
End Sub

Y luego podrías restaurar los altos de fila:

Sub Restaurar()
Range("1:65536").Select
Selection.EntireRow.Hidden = False
Range("A1").Select
End Sub

Espero que estas ideas te sean útiles. Si no, ampía un poco tu consulta
y
veremos... ;-)

Saludos.



"Jonathan Milla" escribió:

> Por favor quisiera poder seleccionar de un rango fijo, solo las celdas
> que
> tengan
> valor diferente a 999.
> Ejemplo:
> A B C
> 1 2 alfa 50
> 2 1 beta 120
> 3 4 charly 52
> 4 999
> 5 999
>
>
> Quisiera que solo seleccionara de A1:C3
> Y si luego A4 tuviera valor diferente a 999 pues seleccionar A1:C4
>
> Se los agradezco bastante.
>
>
>
>
Respuesta Responder a este mensaje
#4 Héctor Miguel
22/08/2006 - 20:41 | Informe spam
hola, Jonathan !

... quisiera poder seleccionar de un rango fijo, solo las celdas que tengan valor diferente a 999. Ejemplo:
A B C
1 2 alfa 50
2 1 beta 120
3 4 charly 52
4 999
5 999
... que solo seleccionara de A1:C3 Y si luego A4 tuviera valor diferente a 999 pues seleccionar A1:C4



-> prueba definiendo un nombre que haga referencia a un rango dinamico/cambiante/... +/- como sigue:
a) [menu] insertar / nombre / definir... [dale un nombre p.e. 'Datos']
b) en el cuadro de referencia, usa esta formula: -> =desref($a$1,,,coincidir(999,$a:$a,0)-1,3)
excel agregara el nombre correspondiente a la hoja p.e. -> =desref(hoja1!$a$1,,,coincidir(999,hoja1!$a:$a,0)-1,3)
c) despues, solo tienes que pulsar {F5} ...o ctrl+i ... o [menu] edicion / ir a...
introducir el nombre que hayas definido [p.e. datos] y pulsar {enter} :))

considera el separador de argumentos 'aplicable' [yo uso la coma] :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida