determinar un rango

21/10/2006 - 23:38 por leonardo | Informe spam
necesito determinar un rango de celdas que esté comprendido entre dos celdas
que tienen valores determinados.
Ejem
serieA
n1
n2
n3
.
.
.
nx
serieB

quiero que me dé el rango entre las palabras serieA y serieB ó contar
cuántas celdas hay entre ellas
La cuestión es que quiero hacer un macro para realizar una operación entre
esas series pero el usuario puede agregar filas entre ellas.
¿fui claro?

Preguntas similare

Leer las respuestas

#1 zz
22/10/2006 - 00:12 | Informe spam
Y si en lugar de determinar un rango no haces un bucle que lea todas las
celdas con valores

algo asi como:

Private Function leer_Celdas()
Dim firstcell As String 'esta sera la primera celda del rango
Dim lastcell As String ' y esta la ultima
Dim str_range As String 'aqui vas a guardar el nombre del rango
compuesto por la primera celda y la ultima celda

Range("a1").Activate 'aqui pones la celda de donde
quieres empezar a leer

firstcell = ActiveCell.Address ' y la guardas dentro de la
variable firstcell

Do Until ActiveCell.Value = "" 'este es el bucle que "lee" todas
las celdas con valores
ActiveCell.Offset(1, 0).Activate 'mas bien las recorre y verifica
que no tengan el valor "" o vbnull
Loop


lastcell = ActiveCell.Offset(-1, 0).Address ' aqui seleccionamos la
celda anterior ya que es la ultima que tiene valores
str_range = firstcell & ":" & lastcell ' las unimos para crear el rango
compuesto
leer_Celdas = str_range ' y le asignamos el valor a la funcion
End Function



asi es como yo uso la función

private sub correr

leer_celdas
msgbox myrange.address

end sub

"leonardo" wrote in message
news:e4z$b$
necesito determinar un rango de celdas que esté comprendido entre dos
celdas
que tienen valores determinados.
Ejem
serieA
n1
n2
n3
.
.
.
nx
serieB

quiero que me dé el rango entre las palabras serieA y serieB ó contar
cuántas celdas hay entre ellas
La cuestión es que quiero hacer un macro para realizar una operación entre
esas series pero el usuario puede agregar filas entre ellas.
¿fui claro?


Respuesta Responder a este mensaje
#2 Héctor Miguel
22/10/2006 - 01:33 | Informe spam
hola, leonardo !

necesito determinar un rango de celdas que este comprendido entre dos celdas que tienen valores determinados.
Ejem
serieA
n1
n2
n3
.
nx
serieB
quiero que me de el rango entre las palabras serieA y serieB o contar cuantas celdas hay entre ellas
La cuestion es que quiero hacer un macro para realizar una operacion... el usuario puede agregar filas entre ellas...



si te sirve [antes de usar macros] una alternativa por funciones de hoja de calculo -?-
suponiendo que las 'series' estan en la columna 'A', puedes contar las filas entre una y otra con algo +/- como lo siguiente:

a) asumiendo que la palabra 'serie b' se encuentra -siempre- despues que la palabra 'serie a' -?-
=coincidir("serie b",a:a,0)-coincidir("serie a",a:a,0)

b) si el orden de las palabras pudiera ser 'aleatorio' -?-
=abs(coincidir("serie a",a:a,0)-coincidir("serie b",a:a,0))

c) si necesitas 'excluir' la celda donde se incia/termina la busqueda/cuenta ['serie a/b']...
solo complementa la formula que utilices restando la unidad = -1

solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 leonardo
23/10/2006 - 04:58 | Informe spam
Estuve trabajando con la ayuda que me brindaron pero creo que no he podido
con lo que me he resuelto, así que se los explicito: (ABAJO LES MUESTRO EL
TIPO DE TABLA)
mi idea es hacer que el macro seleccione el rango A4:F11 y ordene por la
columna F, o sea, las filas desde donde dice PRE-SERIE hasta SERIE.
Dar la posibilidad de agregar filas con datos entre los títulos (PRE-SERIE y
SERIE) y así no modificar lo que hace la rutina (si se agregan filas el
rango será distinto).
Este macro quiero que se ejecute al presionar un botón (esto creo que lo sé
hacer).
Podría pasar que el usuario modifique (agregue o elimine) filas sobre o
entre los títulos (PRE-SERIE y SERIE), así que el rango se podría decir que
es dinámico.
Espero que al usuario no se le ocurra agregar columnas antes (que los
títulos se ubiquen siempre en la columna A).
Luego del segundo título aparecen otros grupos de datos que también los
quiero ordenar, pero creo que repitiendo la rutina anterior lo podré
resolver.

Tendría que pintar las seis primeras filas de cada subgrupo (entre títulos)
y poner en negrita todas aquellas que tengan en TT un número mayor a 9 (por
ejem).

Espero sepan disculpar tanta ignorancia, pero creo que haciendo y
preguntando se aprende.

Leonardo

A B C D E F
1 NIVEL 1 CL SS AM VI TT
2
3 PRE-SERIE
4 Fca G C 9,125 8,15 9,2
5 Ta de la C 8,975 7,6 8,9
6 M PO O 9,450 8,2 7
7 Da Gz C 8,550 7,55 8,8
8 GCae C 9,275 6,25 8,6
9 S Rod C 7,900 7,7 8,05
10 Ag S C 8,875 6,65 8
11 NA PO GYCS 0,000
12 fasdf dd 0000
13 SERIE
14 SGAND O 9,450 9,6 9,25
15 ANA S C 9,475 9 8,9 9,4
16 N CAO GY 8,950 8,6 8,35
17
18 SERIE 2
...
...
Respuesta Responder a este mensaje
#4 Héctor Miguel
23/10/2006 - 05:28 | Informe spam
hola, leonardo !

(ABAJO LES MUESTRO EL TIPO DE TABLA)



[solo, tratando de esclarecer algunos puntos con -todavia- algo de confusion]...

__ 1 __
... que el macro seleccione el rango A4:F11 y ordene por la columna F
o sea, las filas desde donde dice PRE-SERIE hasta SERIE.



1) en la tabla que expones...
a) la palabra PRE-SERIE aparece en la fila 3 [luego entonces]...
al requerir que la seleccion inicie en la fila 4... debe entenderse como...
-> la fila inmediata posterior a la primer palabra buscada ?
b) la [segunda] palabra SERIE aparece en la fila 13 [luego entonces]...
al requerir que la seleccion termine en la fila 11... debe entenderse como...
-> DOS filas 'antes' que la segunda palabra buscada ?
o la ultima fila con datos MAS UNA en la columna 'F' [dentro del rango 'dinamico'] ?
o... ???

__ 2 __
Dar la posibilidad de agregar filas con datos entre los títulos (PRE-SERIE y SERIE)
y asi no modificar lo que hace la rutina (si se agregan filas el rango sera distinto) [...]



2) resuelto o aclarado el punto 1... sera mas facil completar 'el cometido' :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la tabla expuesta __
A B C D E F
1 NIVEL 1 CL SS AM VI TT
2
3 PRE-SERIE
4 Fca G C 9,125 8,15 9,2
5 Ta de la C 8,975 7,6 8,9
6 M PO O 9,450 8,2 7
7 Da Gz C 8,550 7,55 8,8
8 GCae C 9,275 6,25 8,6
9 S Rod C 7,900 7,7 8,05
10 Ag S C 8,875 6,65 8
11 NA PO GYCS 0,000
12 fasdf dd 0000
13 SERIE
14 SGAND O 9,450 9,6 9,25
15 ANA S C 9,475 9 8,9 9,4
16 N CAO GY 8,950 8,6 8,35
17
18 SERIE 2 ...
Respuesta Responder a este mensaje
#5 Héctor Miguel
23/10/2006 - 05:51 | Informe spam
hola [de nuevo], leonardo !

si quieres ir haciendo pruebas... 'simpaticas', antes de requerir apoyo de macros
[aunque tendria que ser 'grupo por grupo']... intenta haciendo lo siguiente:

1) escribe en 'H1' la primer palabra-serie a buscar [p.e. -> pre-serie]
2) escribe en 'H2' la segunda palabra-serie a buscar [p.e. -> serie]
3) escribe en 'H3' la siguiente formula:
="a"&coincidir(h1,a:a,0)+1&":f"&coincidir(h2,a:a,0)-2
[toma nota que mi sistema usa la coma en la separacion de los argumentos] :))
4) introduce lo siguiente: -> indirecto(h3) [y pulsas {enter}]
puedes introducirlo desde cualquiera de los 'atajos' para 'ir a...' [p.e.]...
a) en la 'caja de nombres' [a la izquierda de la barra de formulas]
b) pulsando {F5} [en el cuadro de referencia]
c) con el atajo de teclado del punto anterior: -> {ctrl}+i [tambien en el cuadro de referencia]

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida