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

Pegar datos a partir de celda vacía columna B

48 views
Skip to first unread message

Lito

unread,
Jun 17, 2003, 7:07:00 PM6/17/03
to
Hola:

Tengo una hoja con datos en las cuatro primeras columnas.
Hay filas que tienen columnas con celdas en blanco. (No todas las filas tienen datos en las cuatro
columnas)
Busco código para hallar la segunda celda vacía de la columna B para pegar desde allí datos traídos
de un archivo.txt

Anticipadas gracias.

Lito


Fernando Arroyo

unread,
Jun 18, 2003, 3:49:03 AM6/18/03
to
Hola, Lito. Prueba con:

Sub HallarSegundaCeldaVacía()
Dim rngCeldasVacías As Range

Set rngCeldasVacías = ActiveSheet.Range("B1", ActiveSheet.Range("B65536").End(xlUp)).SpecialCells(Type:=xlCellTypeBlanks)
MsgBox prompt:="Celda " & rngCeldasVacías.Areas(2).Cells(1).Address

Set rngCeldasVacías = Nothing
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Lito" <li...@nospam.com> escribió en el mensaje news:u5%23B5TSN...@tk2msftngp13.phx.gbl...

Carlos

unread,
Jun 19, 2003, 8:02:15 AM6/19/03
to
Se me ocurre lo siguiente:

Sub BuscaSegundaCeldaVacía()
Columns("B:B").Select
Selection.Find(What:="", After:=ActiveCell,
LookIn:=xlFormulas, LookAt:=xlWhole,
SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False).Activate
Selection.FindNext(After:=ActiveCell).Activate
ActiveCell.Select
End Sub
Espero que te sirva

Lito

unread,
Jun 20, 2003, 10:57:12 AM6/20/03
to
Gracias Carlos por tu respuesta.

Tu código hace "casi" lo que busco. Solo que activa la celda D4, que está libre, pero en realidad
hay muchos datos en las siguientes filas en las columnas A:C.

Lo que intento es conseguir que se active una celda vacía de la columna B bajo el último dato
digamos de la región actual

Lo intento con :

Range("A1:D1").Select
Selection.CurrentRegion.Select
Selection.End(xlDown).Select
ActiveCell.Offset(2, 1).Range("A1").Select

Pero va a la columna B dos celdas mas abajo del último dato de la columna A y muchas veces sucede
que hay datos por debajo de esas filas.

Saludos.

Lito

"Carlos" <el_t...@hotmail.com> escribió en el mensaje
news:048d01c3365a$a0198750$a001...@phx.gbl...

Lito

unread,
Jun 20, 2003, 10:23:07 AM6/20/03
to
Gracias Fernando por tu intento.

Lamentablemente algo no funciona, ¿Habré expresado mal mi necesidad?

Necesito hallar la segunda celda vacía de la *columna B* y *activarla* (hacer que sea la celda
activa) para pegar a partir de allí datos tomados de un archivo.txt.

Tu código, aplicado a mi archivo, me informa en un mensaje "Celda $A$12" y en esa celda (combinada
con B12) hay texto y por debajo de ellas siguen varias filas de datos que se borrarían si se pega a
partir de allí.

Cordiales saludos.

Lito

"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> escribió en el mensaje
news:eJTxY4WN...@tk2msftngp13.phx.gbl...

Fernando Arroyo

unread,
Jun 20, 2003, 2:02:47 PM6/20/03
to
Por "hallar la segunda celda vacía de la columna B", ¿qué entiendes tú?. Yo entiendo "empezar a buscar en la columna B celdas vacías a partir de la fila 1, y pararse en la 2ª celda vacía de dicha columna". Si lo que necesitas es activar la 2ª celda vacía después de la última fila con datos de dicha columna, el código sería tan sencillo como:

ActiveSheet.Cells(ActiveSheet.Range("B65536").End(xlUp).Row + 2, 2).Activate

Si tampoco es esto, dílo. Un saludo.


Fernando Arroyo
MS MVP - Excel


"Lito" <li...@nospam.com> escribió en el mensaje news:OF1GNxzN...@TK2MSFTNGP12.phx.gbl...

Lito

unread,
Jun 20, 2003, 3:19:16 PM6/20/03
to
He notado que a veces, a pesar de los esfuerzos, la dificultad estriba en la manera de expresar
correctamente la necesidad o de interpretarla. Este parece ser el caso, seguro que "venceremos" con
la evidente buena voluntad.

Este código que envías es casi perfecto para lo que necesito, pero hace falta algo mas... trato de
expresarlo usando palabras tuyas:

Necesito empezar a buscar en la columna B celdas vacías a partir de la fila 1, y pararse en la 2ª
celda vacía de dicha columna, *siempre y cuando* no haya datos en otras columnas mas abajo, si esto
ocurriera pararse en la columna B en la segunda celda vacía dos filas mas abajo de la última fila
que contenga datos.

O dicho de otra manera:

Necesito que, mediante código, lograr que la celda activa sea la última de la columna B dos filas
mas abajo de la última fila con datos.

(La tercera será la vencida)

Saludos.

Lito


"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> escribió en el mensaje

news:ub9QrY1N...@TK2MSFTNGP11.phx.gbl...

Fernando Arroyo

unread,
Jun 21, 2003, 5:26:31 AM6/21/03
to
Ahora parece que no se nos escapa: lo tenemos rodeado :-))
Prueba con:

ActiveSheet.Cells(Application.WorksheetFunction.Max(ActiveSheet.Range("A65536").End(xlUp).Row, ActiveSheet.Range("B65536").End(xlUp).Row, ActiveSheet.Range("C65536").End(xlUp).Row, ActiveSheet.Range("D65536").End(xlUp).Row) + 2, 2).Select

Si fuera seguro que iba a funcionar bien la propiedad CurrentRegion (para garantizarlo sería necesario que no hubiera filas o columnas en blanco o alguna celda sin datos adyacentes), se podría simplificar bastante la fórmula:

ActiveSheet.Cells(ActiveSheet.Range("A1").CurrentRegion.Rows.Count + 2, 2).Select

Pero, en cualquier caso, la primera es la más segura porque debería funcionar siempre.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Lito" <li...@nospam.com> escribió en el mensaje news:%2339QF82...@tk2msftngp13.phx.gbl...

Lito

unread,
Jun 21, 2003, 11:49:49 AM6/21/03
to
Como dices, con la primera hemos vencido al enemigo. La segunda no siempre es segura. Por ese lado
intente tirar uno tiros pero, el blanco me eludía ;-)
La que pones en primer lugar ni se me había ocurrido.

Muchas gracias Fernando.

Lito.

"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> escribió en el mensaje
news:uT2#2c9NDH...@TK2MSFTNGP10.phx.gbl...

0 new messages