Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Primera ocurrencia de fila vacía

755 views
Skip to first unread message

sr.manuel

unread,
Jan 3, 2012, 8:24:59 PM1/3/12
to
Saludos al grupo.
He estado buscando en los foros, pero no encuentro lo que necesito. Me
explico:


Tengo una una tabla de valores sobre varias columnas, tal como el
siguiente ejemplo:

A B C
=== === ===
1 2,1 5,3 4,1
2 1,1 2,2 3,1
3 8,3 3,4 6,5
. .. .. ..
. etc etc etc
. etc etc etc
. <== Primera fila vacía.!!!.
.
. 4,5 3,3 5,1
. 2,0 2,8 2,9

Quisiera saber cual es la primera fila que tiene todos sus campos
vacíos.
Precisamente este número me definirá el número de filas que ha de
tener la tabla.
O por lo menos, cual es la primera celda vacía en la columna "A".

Y si es posible hallarlo mediante el uso de funciones, sin tener que
meterme en macros de VBA.
He intentado las fuciones CONTAR() y CONTARA(), pero lo que hacen es
contar dentro del rango total.
Igualmente he intentado usar la función ESBLANCO() como fórmula
matricial, pero no me aclaro mucho.

Saludos, y agradecido de antemano.

ProfeJM

unread,
Jan 27, 2012, 7:26:30 AM1/27/12
to
Amigo "sr.manuel":

Aunque no soy muy bueno con VBA, esta vez NO pude (me quedó grande)
encontrar una solución a base de fórmulas y funciones, así que te
propongo la siguiente solución a tu inquietud con un sensillo código
VBA, a saber:

Sub CeldaVacia()
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
MsgBox (ActiveCell.Row)
End Sub

Este código supone que tus datos SIEMPRE iniciarán en la "Celda A1"

Espero que haberte ayudado.

Cualquier cosa cometas para saber como te fue.

Pedro F. Pardo

unread,
Jan 30, 2012, 8:48:54 AM1/30/12
to
A ver si esta opción funciona:

=MATCH(1,--(ISBLANK(A:A)),0)

Tengo Excel en Inglés de modo que imagino que la traducción al Castellano de las fórmulas será:
=COINCIDIR(1,--(ESBLANCO(A:A)),0)

pero no me hagas mucho caso porque no las he probado :-(

Es una fórmula matricial de modo que una vez escrita hay que pulsar CTRL+SHITF+ENTER para introducirla y aparecerán unas {} envolviendo la fórmula indicando que Excel ha "entendido" que se trata de una fórmula matricial.

{=COINCIDIR(1,--(ESBLANCO(A:A)),0)}

¿Cómo funciona?
He seguido tu pista de utilizar ESBLANCO de manera matricial :-)

Aplico la función ESBLANCO a toda la columna A y esto me devuelve una fila de 0 y 1. Cero si hay algo en la celda y uno si está en blanco. La función coincidir busca la primera aparición del número 1 en esa fila. Es decir el primer resultado en blanco.

Voilá :-) y sin usar macros ;-)
Message has been deleted

ProfeJM

unread,
Jan 30, 2012, 3:29:20 PM1/30/12
to
Saludos "Pedro F. Pardo"

Excelente solución y como dices...

" Voilá :-) y sin usar macros ;-) "

Yo si la probé; funciona perfectamente y es exactamente lo que buscaba
el amigo "sr.manuel" (espero que él la vea).

Muy bien por ti y tu ingeniosa combinación de MATCH e ISBLANK

ProfeJM

unread,
Jan 30, 2012, 3:33:34 PM1/30/12
to
"Pedro F. Pardo":

Pd: Podrias explicarnos...
¿Como funciona el doble signo menos que antepones a la apertura del
parentesis de la funcion ESBLANCO?
¿Es solo para fórmulas matriciales?

Gracias "Pedro F. Pardo"

Pedro F. Pardo

unread,
Jan 31, 2012, 5:35:55 AM1/31/12
to
Es un truco boleano.
Sirve para convertir TRUE en el número 1, por si necesitas hacer operaciones con el.

Imagina que lo aplicamos al rango (A1:A10)

¦A¦
Esto
es
un
[CELDA en BLANCO]
ejemplo

Si escribimos (A1:A10) obtenemos, el array {"Esto";"es";"un";0;"ejemplo";0;0;0;0;0}

Si escribimos (A1:A10="ejemplo")
obtenemos el array
{FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}

Si multiplicamos por -1
-(A1:A10="ejemplo")
tenemos:
{0;0;0;0;-1;0;0;0;0;0}

y si volvemos a multiplicar por -1
--(A1:A10="ejemplo")
obtenemos:
{0;0;0;0;1;0;0;0;0;0}
Si en lugar de buscar la palabra "ejemplo" buscamos la celda en blanco, pues cambiamos --(A1:A10="ejemplo") por --ESBLANCO(A1:A10)

Una versión alternativa de esta fórmula sin convertir los valores boleanos a números podría ser:

{=COINCIDE(VERDADERO,ESBLANCO(A:A),0)}

o ya puestos... como 0=FALSO :-)

{=COINCIDE(VERDADERO,ESBLANCO(A:A),FALSO)}

Que suena como a metalenguaje robotico XD XD XD
Coincide Verdadero, EsBlanco Columna A, Falso
Pero excel lo entiende a la perfección ;-)

Pedro F. Pardo

unread,
Jan 31, 2012, 5:50:28 AM1/31/12
to
Olvidé mencionar que cuando escribimos ESBLANCO(A1:A10)
el resultado es: {FALSO;FALSO;FALSO;VERDADERO;FALSO;VERDADERO;VERDADERO;VERDADERO;VERDADERO;VERDADERO}

--ESBLANCO(A1:A10)
devuelve:
{0;0;0;1;0;1;1;1;1;1}, es decir devuelve un montón de coincidencias (todas las celdas vacías.

Pero afortunadamente la función COINCIDE nos devuelve la posición solo de la primera aparición del valor buscado.

Pedro F. Pardo

unread,
Jan 31, 2012, 6:29:25 AM1/31/12
to
Ops, he escrito "COINCIDE" cuando debería ser "COINCIDIR" :-(

=COINCIDIR(VERDADERO,ESBLANCO(A:A),FALSO) [CTRL+SHIFT+ENTER]
{=COINCIDIR(VERDADERO,ESBLANCO(A:A),FALSO)}

ProfeJM

unread,
Jan 31, 2012, 8:10:36 AM1/31/12
to
Saludos "Pedro F. Pardo":

Muy amable por tu disertación sobre el tema.

No había encontrado ninguna explicación, al respecto, con el lujo de
detalles que tu lo haces.

Creo que eta vez lo tengo casi todo claro y digo 'casi' porque aun no
logro dilusidar si existen diferencia al usarse en fórmulas distintas
a las matriciales; ando haciendo esos ensayos.

Lo que me ha tenido atado a este foro, es que siempre ha brillado por
generosidad al compartir el conocimiento.

Mi gratitud y mi reconocimiento para ti Pedro

Pedro F. Pardo

unread,
Jan 31, 2012, 10:16:46 AM1/31/12
to
No, no creo que haya diferencia.

Cuando multiplicas -1*{1,2,4,3,6} lo que hace es multiplicar por -1 cada elemento de la matriz.

Si lo haces entre números individuales funciona igual, pero solo de uno en uno.

-1*7=-7
-1*TRUE=-1
-TRUE=-1
--TRUE=1
1*TRUE=1

etc...

No se me ocurre ahora mismo ninguna aplicación pero seguro que existe. Esta idea del -- la vi por primera vez en una aplicación muy creativa de la función SUMAPRODUCTO :-) haciendo la función de suma condicional. Cuando vi por primera vez la definición de la función SUMAPRODUCTO pensé que era la función más inutil del mundo pero gracias a esos truquitos se convirtió en algo verdaderamente util ;-)

Saludos.
0 new messages