VBA. Proceder con la macro, sólo si el valor de una celda no existe ya en un rango de celdas.
Me presento. Me llamo Jesús y soy ingeniero. Estoy atascado con una macro que en principio es más que sencilla.
Tengo 2 columnas de" x" filas. En la primera columna tengo nombres de tareas, en la segunda columna tengo tiempos. Ejemplo: Cargar 30s, movimiento 1m, descargar 1m.
Los nombres de estas tareas se pueden repetir, de modo que "movimiento" puede aparecer en varias filas, así como cargar y descargar también.
Quisiera que en una fila aparezcan los totales de cada tarea, de modo que:
cargar movimiento descargar
5m 30 s 10m 5m
Sin que se repitan las columnas, es decir que cada tarea aparezca en una sola columna con su total correspondiente de tiempo debajo.
De momento el código que tengo es el siguiente:
Public Sub sort_times()
lastrow = ActiveSheet.UsedRange.Rows.Count
Dim Task As String
Dim Time As Integer
task_col = 7 '1ªcolumna de tareas
time_col = 7 '1ª columna de tiempos acumulados
'Empezar a escribir siempre en (2,4)
For i = 2 To lastrow
Task = Cells(i, 4)
Time_acum = Cells(i, 5)
For j = i + 1 To lastrow
If ActiveSheet.Cells(i, 4) = ActiveSheet.Cells(j, 4) Then
Time_acum = Time_acum + ActiveSheet.Cells(j, 5)
Else
End If
Next j
ActiveSheet.Cells(2, task_col).Value = Task
ActiveSheet.Cells(3, time_col).Value = Time_acum
task_col = task_col + 1
time_col = time_col + 1
Next i
End Sub
Cómo veis, la columna donde lee las tareas es "Task" que es = a Cells(i, 4), y el rango donde debe hacer la comprobación de Task no existe de antemano es entre Cells(2,7):Cells(2, task_col).
De alguna manera entiendo que he de hacer una comprobación previa de que Task, no existe entre Cells(2,7):Cells(2, task_col).
Este código me escribe las columnas pero claro el bucle i sigue y sigue y se me repiten las tareas...
He pensado en usar bucles While, CountIf, pero no doy con la tecla.