Hacer macro que realice tres acciones

Disculpa que te moleste nuevamente mrtool, pero necesito urgente la siguiente ayuda de los archivos que te envíe, si te diste cuenta en una hoja de exception report aparecen varias tablas con los mismos campos o títulos, entre cada tabla existen filas vacías, lo que quiero hacer es implementar una macro que me elimine todas las filas vacías y eliminar los títulos de las otras tablas también, esto es para que me quede todo como una tabla, lo estado intentando de hace pero mi macro me va eliminando de a poco las filas cuando la aplico 4 veces me deja la tabla así general como yo la quiero y la idea es hacerlo de una te envío mi macro haber si la puedes arreglar:
Sub Eliminar_filas_vacias()
Application.ScreenUpdating = False
Range("c3").Select
For i = 1 To 1000
If ActiveCell = "" Or IsNull(ActiveCell) Or ActiveCell = "Error Code" Then
Selection.EntireRow.Delete
End If
ActiveCell.Offset(1, 0).Select
Next i
Application.ScreenUpdating = True
End Sub
Ahora si te fijas en el archivo que te envíe hay varias celdas vacías en los campos Truck y Duration entonces la idea es crear una macro que me autocomplete esa información que falta con la ultima información información disponible algo así:
truck      duration    error code
CE_10 0:05:59 5109
                                  5104
CE_03 0:00:03 4515
Y lo autocomplete así
CE_10 0:05:59 5109
CE_10 0:05:59 5104
CE_03 0:00:03 4515
Si te das cuenta solamente truck y duration van a estar vacías, error code no, esto es solamente unas cuantas celdas en otras partes si te fijas en el excel que te envíe hay como 5 o 6 o más filas con celdas vacías entonces no se si me puedas ayudar a realizar este favor de idear una macro para autocompletar o autocopiar a las celdas vacías con la ultima información disponible, esta es la segunda acción de la macro
La tercera es hacer 2 inpubox, en el primero debo ingresar la fecha y la fecha que ingrese se debe copiar en toda la columna correspondiente a fecha la fecha que yo ingrese al inputbox, la segunda es para ingresar el turno (día o noche) y hacer exactamente lo mismo que la primera, pero para eso la macro debe saber cuantas filas con información hay para que no me las copie en toda la columna sino hasta donde este la información, bueno amigo eso seria disculpa la molestia nuevamente yo actualmente estoy trabajando para pasar los datos del exception report al libro donde almacenaré los datos así como tu me dijiste desde ya gracias amigo y espero ansioso tu respuesta.

1 respuesta

Respuesta
1
Vamos por partes:
La primera: En mi web www.expertmrtool.com hay una macro 'EliminaFilas' que puedes adaptar fácilmente a cualquier necesidad. La macro comprueba el valor de una celda/columna determinada para todas las filas por lo que es muy simple hacer una fórmula para forzar dicho valor donde nos interesa.
Luego es solo pulsarla. Si tienes problemas adaptándola me lo comentas. Otra posibilidad es poner un bucle for cont=1 to 4 a tu macro y que se ejecute automáticamente 4 veces :-)
La segunda tiene un poco de trabajo:
En un rato subo una excel a mi web 'rellenarfilas' para que puedas usarla.
Lo tercero no es trivial. Estoy trabajando en una solución general para cubrir las necesidades de formularios pero tardará semanas todavía en estar disponible. Lo más simple para que puedas trabajar es usar una tabla valor-fecha y vlookup. Así :
Te creas en otra hoja una tabla e incluyes el valor ( ese que quieres meter en el input box) y su fecha en la columna de al lado.
Hacas una fila con esos datos para los xx valores que tengas.
En la hoja que quieres haces un vlookup contra esa tabla y usando el campo que dices como 'busqueda'. Con eso tienes exactamente lo que quieres de una forma mucho más simple.
Si tienes algún problema me lo comentas.
Hola mrtool gracias por tu paciencia hice lo que me dijiste en segunda opción un for con cont de 1 a 4 y me funcionó al toque, lo segundo mira eh estado trabajando para rellenar las filas vacías, lamentablemente ahora no puedo ver tu macro rellenar filas, y esto es lo que eh hecho me funciona bien para el truck me rellenas las filas vacías de la columna truck correctamente pero el problemas es con la duration cuando hay un espacio vacío que rellenar me lo rellena bien pero si hay 2 o más la primera me la rellena bien pero de la segunda en adelante me rellena con números extraños te paso mi macro para que le eches una revisada:
Sub rellenar()
Dim filaanterior As String
Dim filalibre, fila, columna As Integer
truckAnterior = ""
Range("C2").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
filalibre = ActiveCell.Row
filaanterior = ""
For columna = 1 To 2
For fila = 2 To filalibre - 2
filaanterior = Cells(fila, columna)
If Cells(fila + 1, columna) <> "" Then
Cells(fila + 1, columna) = Cells(fila + 1, columna)
filaanterior = Cells(fila + 1, columna)
Else
Cells(fila + 1, columna) = filaanterior
End If
Next fila
Next columna
End Sub
Cabe destacar que en la columna durration los n¡Umeros son así 0:00:00 este es el formato no se si tendrá algo que ver y ya solucione la tercera macro para completar con los inputbox con esta macro que realice
Sub arreglar()
Dim filalibre, i As Integer
Dim fecha, turno As String
fecha = InputBox("Ingrese Fecha")
Cells(1, 4).Value = "Fecha"
Range("C2").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
filalibre = ActiveCell.Row
For i = 2 To filalibre - 1
If fecha = 0 Then
MsgBox ("No ah ingresado una fecha")
Else
Cells(i, 4) = fecha
End If
Next i
turno = InputBox("Ingrese Turno")
Cells(1, 5).Value = "Turno"
'Range("C2").Select
'While ActiveCell.Value <> ""
'ActiveCell.Offset(1, 0).Select
'Wend
'filalibre = ActiveCell.Row
For i = 2 To filalibre - 1
If fecha = 0 Then
MsgBox ("No ah ingresado un turno")
Else
Cells(i, 5) = turno
End If
Next i
End Sub
Desde ya gracias mrtool por todo y si le puedes echar una revisada a la macro que te pase y puedes encontrarle la falla te estaría muy agradecido. Y si no te molesta puedo hacerte otra consultita estaré trabajando también en ella bueno se trata de lo siguiente:
Quiero crear otra columna donde estén las calificaiones de los código de error, como es esto tengo una base de datos (una hoja excel) en donde en una columna tengo todos los códigos de error y en la otra columna la calificación, los códigos los eh clasificado en 4 categorías: leve, medianamente grave, grave y urgente, ya lo que quiero conseguir es lo siguiente :
En el libro que me envían comparar la columna error code con la primera columna de mi base de datos, y si hay alguna coincidencia se copie la calificación del código de error en una nueva columna en el archivo excel que me evian(esto es al excel en donde yo realizo las macros ) entonces así tendré una tabla con los siguientes campos o columnas:
truck  -  duration  -   error code  -  fecha  -   turno  -   calificaicon     
espero ser mas menos claro espero tu respuesta amigo y gracias por todo eh aprendido mucho en este poco tiempo, gracias a ud claramente eso seria otra vez gracias
Por partes por favor que mezclamos varias cosas en el mismo punto y termino liándome, piensa que llevo 30 preguntas al día.
El tema de la macro de rellenar: Usa la mía que funciona y cópiala. Si te da problemas en la 2ª fila debe ser por que estas arrastrando el 1er valor y te pierde la referencia vez paso a paso.
La otra cuestión ábrela por favor en una nueva, me facilita mucho la tarea tener una pregunta por cada tema, si no termino volviéndome loco.
Gracias mrtool por todo ya solucioné mi problema para rellenar las celdas vacías, sin embargo tengo serios dramas con la ultima pregunta que te hice, disculpa las molestias pero estoy contra el reloj y esta ultima macro es creo la más complicada por lo menos para eh pensado en método para hacerla pero luego llego y quedo en nada, quizás me falten algunas instrucciones o códigos que aun no se te daré una pequeña idea de lo que quiero hacer :
Tengo el libro excel donde aplico las macros y tengo otro libro donde tengo todos los error code, con una calificación más menos así
libro donde aplico macros libro base de datos error code
campos o columnas campos o columnas
truck -duration-error code-fecha-turno error code - calificación
la idea es crear otra columna llamada calificación, como debe crearla debe comparar la columna 3(error code) del libro donde aplico las macros con la columna uno del libro base datos, entonces compara el primer error code del libro donde aplico la macro y revisa toda la columna 1 del libro base de datos y cuando encuentre el código me guarde la fila y me guarde la calificación del código que se encontrara en la misma fila pero en la otra columna y esa calificación me la guarde en la columna 6 en el libro donde aplico las macros y así sucesivamente al final tiene que quedar así el libro donde aplico las macros:
Libro donde aplico macros
Campos o columnas
truck -duration-error code-fecha-turno - calificacion
en resumen hay que hacer lo siguiente :
Libro donde aplico macros libro base de datos error code
campos o columnas campos o columnas
truck -duration-error code-fecha-turno                                   error code -  calificacion
CE_01   x             5109        x          x                                           ...5109        grave
me guarde la calificacion y me la lleve a la columna 6 del libro donde aplico las macros
libro donde aplico macros                                                     
campos o columnas    
truck -duration-error code-fecha-turno - calificacion
CE_01 x 5109 x x grave
Espero no ser de mucha molestia si pudieras ayudarme estaría agradecido nuevamente quizás no sea difícil pero a mi me ah hecho doler la cabeza ya, desde ya gracias mrtool y espero tu respuesta es muy urgente sino no te molestaría gracias por todo
Eso se hace con vlooup, en la web y en miblog tienes una explicación de como se hace.
Debes poner la columna de búsqueda la primera.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas