Excel, completar cedas vacías

Respuesta de
a
Usuario
Hola expertos, necesito si puden ayudarme con un bucle que ponga un numero determinado en la celda b1, luego recorra el rango a1:a50, (donde hay celdas vacías) y en la primera celda vacía, coloque el numero que encontró en la celda b1, pero una vez utilizado, debe ser cambiado por otro de mayor valor, y este debe colocarse en la siguiente celda vacía, y así hasta terminar el rango
Desde ya muchas gracias
Avatar
Experto
Hola, el numero que se pone en la celda B1 lo pones tú, otr cosa el numero mayor que después hay que poner lleva alguna constante por ejemplo si el numero primero era 6 el siguiente es el 7 y el siguiente el 8... y así hasta completar el rango con celdas vacías.
Aclarame esto y te ayudo.
>Un saludo
>Julio
Usuario
En relación a la constante, si deben haber una constante de 77 números de diferencia entre ellos.
Por otro lado en la celda b1, se colocaría manualmente la primera vez, luego la macro debería guardar el ultimo numero utilizado, para la próxima vez que se ejecute, comience con el numero 77 veces superior.
Muchas gracias por tu atención.
 
Un abrazo
 
 
Avatar
Experto
Hola, bien pues la macro quedaría así:
Sub cambiar()
Sheets("Hoja1").Select
Range("B1").Select
valor=ActiveCell.Value
Range("A1").Select
ActiveCell.End(xlDown).Offset(1,0).Select
ActiveCell.Value=valor
Do While ActiveCell.Address="$A$50"
Range("A1").Select
ActiveCell.End(xlDown).Offset(1,0).Select
ActiveCell.Value=valor+77
valor=ActiveCell.Value
Loop
End Sub
Pones esta macro en un modulo de VBA y si quieres se la asignas a un botón dibujado en la Hoja en este caso Hoja1, pruebalá y si te sirve comenta, puntúa y finaliza la consulta.
>Un saludo
>Julio
Usuario
Julio:
La macro funciona a medias, por que, coloca el numero de la celda B1, en cada casilla vacía de la columna A, pero siempre coloca el mismo, no le suma los 77.
Por otro lado la columna a, no tiene siempre las mimas cantidad de registros o sea puede llegar hasta la 50 como en el ejemplo o puede llegar hasta la 10 o hasta la 1000.
Y por ultimo, si esta repetición pudiera ser de manera automática al presionar el botón o al ejecutar la macro.
Un abrazo, y muchas gracias.
 
Avatar
Experto
Hola, efectivamente me equivoqué en un igual por un distinto la macro es esta:
Sub cambiar()
Sheets("Hoja1").Select
Range("B1").Select
valor = ActiveCell.Value
Range("A1").Select
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveCell.Value = valor
Do While ActiveCell.Address <> "$A$50"
Range("A1").Select
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveCell.Value = valor + 77
valor = ActiveCell.Value
Loop
End Sub
Ya te dije que se la asignes a un botón para ejecutarla, si no sabes hacerlo me lo dices.
>Un saludo
>Julio
Usuario
Julio:
Vamos avanzando, ya que la macro funciona espectacular, pero mientras la cantidad de celdas sea < a 50, ya que si son = > a 50, la planilla se vuelve loca.
Por otro lado te recuerdo que la cantidad de celdas (completas y vacías) en la columna (A), es aleatoria.
Desde ya muchas gracias.-
 
 
Avatar
Experto
Hola, vale (el que el numero de celdas sea aleatoria, no era la condición primera te recuerdo que era el rango de A1 a A50, vas cambiando de decisiones a medida que avanzan las respuestas, y el trabajo que ya he realizado no sirve para nada... no es serio)si esto me lo dices en principio mi trabajo lo encamino a otro resultado, lógicamente. A ver si ahora te sirve:
Sub cambiar()
Dim valor, celda As String
Sheets("Hoja1").Select
Range("B1").Select
valor = ActiveCell.Value
Range("A65536").Select
ActiveCell.End(xlUp).Select
celda=ActiveCell.Address
Do While ActiveCell.Address <> celda
Range("A1").Select
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveCell.Value = valor + 77
valor = ActiveCell.Value
Loop
End Sub
A ver ahora tomamos el valor de B1 en la variable valor, después nos ituamos en la ultima celda de la Col A y subimos hasta la primera celda con datos (que será siempre la ultima fila de tu tabla) y recogemos la posición de la celda, después nos vamos a la primera celda de A y comenzamos a poner valores sumando 77 hasta que no encuentre más celdas vacías y haya llegado a la ultima celda de tu rango en A.
Si te ha servido puntúa comenta y finaliza la consulta. Gracias
>Un saludo
>Julio
PD: Para sucesivas consultas a cualquier experto te recomiendo que especifiques lo que quieres hacer desde el principio, dime como te sentaría que te mande pintar una silla y cuando has terminado te digan "es que no es una silla son 100"...
Usuario
Julio:
Primero, te pido disculpas, pero soy nuevo en esto, y a veces la inexperiencia hace que cometamos errores.
Por otro lado, la macro nueva, con la modificación, se sitúa en la ultima celda vacía de la columna "A" y no hace más nada.-
Muchas gracias, un abrazo
Avatar
Experto
Vale por fin ya esta vaya tontería de macro y la de vueltas que hemos dado queda así:
Sub cambiar()
Dim valor, celda As String
Sheets("Hoja1").Select
Range("B1").Select
valor = ActiveCell.Value
Range("A65536").Select
ActiveCell.End(xlUp).Select
celda = ActiveCell.Address
Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = valor
Do While ActiveCell.Offset(-1, 0).Address <> celda
Range("A1").Select
ActiveCell.End(xlDown).Offset(1, 0).Select
If ActiveCell.Offset(-1, 0).Address = celda Then
Exit Do
End If
ActiveCell.Value = valor + 77
valor = ActiveCell.Value
Loop
End Sub
Si ya te sirve comenta, puntúa y finaliza la consulta. Gracias
>Un saludo
>Julio
Usuario
Julio:
Extraordinario lo tuyo