Macro que consulte la columna "G" y dependiendo de su valor ingrese un dato en la columna "I"

Necesito que si la columna G tiene un tiempo menor a 19 segundo en la misma fila pero en la columna I se ingrese un 1 si es mayor a 20 y menor a 39 un 2 si es mayor a 40 un 3.. Y que haga esto con todos los datos de la columna G la cual tiene tiempo en este formato 00:00:

2 Respuestas

Respuesta
Respuesta

¿Algo así?

entonces usa esta macro

Sub tiempos()
Set datos = Range("g1").CurrentRegion
With datos
    r = .Rows.Count
    For i = 1 To r
        tiempo = Second(.Cells(i, 1))
        If tiempo <= 19 Then numero = 1
        If tiempo >= 20 And tiempo <= 39 Then numero = 2
        If tiempo > 40 Then numero = 3
        .Cells(i, 2) = numero
    Next i
End With
Set datos = Nothing
End Sub

gracias por la respuesta, me dice no coinciden los tipos" el formato de celda en G es 00:00:00 no se si influye en algo 

funciona pero lo muetras en la casilla h yo ocupo que sea en la casilla I colo le haria ento

Cambia esta línea

tiempo = Second(.Cells(i, 1))

por esta tiempo=second(. Cells(i, 2) para que coloque el resultado en la casilla I

Estoy usando estos valores

If tiempo <= 10 Then numero = 1
If tiempo >= 11 And tiempo <= 30 Then numero = 2
If tiempo > 30 Then numero = 3

Ya solucione eso ya lo muestra en la columna "I"ahora lo que pasa es que no hace el calculo en los últimos números, no en el primero por ejemplo: 00:01:52 seria 3

Y 00:01:11 seria 3 también pero indica 2 solo toma en cuenta el 11 no el 1:11

Entonces corrígeme si me equivoco estas diciendo que quieres los segundos totales, es decir 1:11=71 segundos o 2:¿30=150 segundos?, porque eso ya cambia la programación de la macro, eso por un lado por el otro en la parte del segundo 39 igual a 2 y que la macro te pone 3, ya chequeaste los parámetros que le diste, ¿el if tiempo >30 then numero=3?, esta correcto a todo segundo mayor a 30 le va a signar el numero 3, quiere que le ponga 2 entonces cambia este if junto con este otro If tiempo >= 11 And tiempo <= 30 Then numero = 2

Ponlos 30 en 40 y listo.

00:01:20deberia ser 3 por que es mayor a 30 pero ele pone 2 eso es a lo que me refiero

si es 00:00:11 es 2 porque se cumple  If tiempo >= 11 And tiempo <= 30 Then numero = 2

pero si es 00:01:20 es 3 porque es mayor que 30 pero me muestra un 2 

como puedo corregir eso y que si es un minuto y algo me muestre 3 si es menor del minuto que sea 2 o 1 espero h

espero haberme explicado bien y gracias*

El resultado, la macro convierte tod a a segundos para no usar más código del necesario, como ves si hay minutos u horas el valor en I es 3

y aqui esta la macro 

Sub tiempos()
Set DATOS = Range("g1").CurrentRegion
With DATOS
    R = .Rows.Count
    For i = 1 To R
        hora = Hour(.Cells(i, 1)) * 3600
        minuto = Minute(.Cells(i, 1)) * 60
        segundos = Second(.Cells(i, 1))
        tiempo = hora + minuto + segundos
        If tiempo <= 10 Then numero = 1
        If tiempo >= 11 And tiempo <= 30 Then numero = 2
        If tiempo > 30 Then numero = 3
        .Cells(i, 3) = numero
    Next i
End With
Set DATOS = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas