Identificar un valor "desplazado" y moverlo una celda abajo

Solo consultas sobre macros y código VBA Excel.
Reglas del Foro 1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!

Identificar un valor "desplazado" y moverlo una celda abajo

Notapor Javixu » 30 Dic 2017 23:28

Buenas,

Tengo una base de datos que importo de una web que tiene 3 campos: Fecha, Importe, Premio.
Esta base de datos tiene la peculiaridad de que entre los datos que me interesan, suenen aparecer entre 6 y 8 filas rellenas de ceros en las columas Importe y Premio:

Código: Seleccionar todo
29/12/2017   21,97    41,96   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
29/12/2017   12,71    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
    0,00    0   FALSO
29/12/2017   22,22    42,22   FALSO



Pero el problema es que a veces, el valor de algunas de las celdas del campo premio aparece desplazado una celda más arriba de la que le corresponde (ver adjunto), desalineado con la celda del importe.

Por desgracia yo no tengo muchos conocimientos de VB y solo soy capaz de aprovechar una nueva columna para detectar el error con una función que me da Verdadero cuando lo identifica =SI(Y(B9=0);C9>1)

La pregunta es... una vez pudiendo identificar el error con esta función, ¿se puede hacer que una macro que encuentre este error me lo corrija?

Adjunto un fichero donde creo que se entiende mejor lo que quiero decir! :cry:

Muchas gracias

un saludo!
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Javixu
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 59
Registrado: 19 Jun 2012 13:39

Re: Identificar un valor "desplazado" y moverlo una celda ab

Notapor ikanni » 31 Dic 2017 05:42

Hola javixu,
Prueba con esta macro
Código: Seleccionar todo
Sub ArreglaFalloDeImportacionWeb()
On Error Resume Next
   Set b = Hoja1.Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row)
   For Each celda In b
      With celda
         If .Offset(, 1) = 0 And .Value > 0 And (.Offset(-1, 1) > 0 And IsNumeric(.Offset(-1, 1))) Then _
                .Offset(, 1) = .Offset(-1, 1): .Offset(-1, 1) = 0
         If IsError(.Value) Then .Interior.Color = vbYellow
      End With
   Next
End Sub
Avatar de Usuario
ikanni
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 196
Registrado: 22 Dic 2013 08:51

Re: Identificar un valor "desplazado" y moverlo una celda ab

Notapor Javixu » 31 Dic 2017 08:48

Funciona perfectamente!

Gracias Ikanni! :D
Javixu
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 59
Registrado: 19 Jun 2012 13:39

Re: Identificar un valor "desplazado" y moverlo una celda ab

Notapor Javixu » 31 Dic 2017 08:55

Me ha venido estupendamente!

Una vez solucionado el problema de las celdas descolocadas que me has resueltoTenía en mente hacer que los valores que me daban error se sustituyeran por "0"

tocando un poco las condiciones de tu propuesta, lo he conseguido hacer muy fácilmente con la misma macro en el mismo paso! La manera que tenía pensado hacerlo era a través de funciones en columnas de al lado y luego copiar, pegar valores, etc... así que esto me ha facilitado muchísimo las cosas.

Código: Seleccionar todo
Sub prueba()
On Error Resume Next
   Set b = Hoja1.Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row)
   For Each celda In b
      With celda
         If .Offset(, 1) = 0 And .Value > 0 And (.Offset(-1, 1) > 0 And IsNumeric(.Offset(-1, 1))) Then _
                .Offset(, 1) = .Offset(-1, 1): .Offset(-1, 1) = 0
[b]         If IsError(.Value) Then .Value = 0[/b]
      End With
   Next
End Sub
Javixu
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 59
Registrado: 19 Jun 2012 13:39


Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados