2 CONDICIONES PARA UNA MACRO celda c=fecha y hora si la celda b son datos unicos y la celda a = cosecha

2 Condiciones para 1 macro

Celda A tipo de area celda b codigo celda c fechasyhoras

-Poner en la celda c las fechasyhora si la celda B son datos unicos sin repetir y a la vez la celda A =cosecha

A                              B                                   C

cosecha           C-0001                          20-11-2017    20:06

cosecha           C-0002                          20-11-2017    20:07

limpia               L-0001

cosecha           C-0006                           20-11-2017    20:08

cosecha          C-0001

Esa seria mi duda .

2 Respuestas

Respuesta
1

Te anexo la macro

Sub Contar_Cosechas()
' Por Dante Amor
    f = 2
    u = Range("A" & Rows.Count).End(xlUp).Row
    With Range("C" & f & ":C" & u)
        .FormulaR1C1 = "=IF(RC[-2]=""cosecha"",IF(COUNTIF(R" & f & "C2:R" & u & "C2,RC[-1])=1,NOW(),""""),"""")"
        .Value = .Value
    End With
End Sub

Cambia el 2 en f=2 por el número de fila donde empiezan tus datos.

Cambia el formato de tu columna C a Personalizado y en Tipo pones esto: dd/mm/aaaa hh:mm

De esa forma se verá la fecha y la hora.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta

¿Algo así?

esta es la macro

Sub poner_fechayhora()
Dim unicos As New Collection
Set datos = Range("b2").CurrentRegion
Set funcion = WorksheetFunction
    With datos
        f = .Rows.Count:    c = .Columns.Count
        .Columns(c + 1) = "=1+" & .Cells(0, c + 1).Address(False, False)
        Set datos = .CurrentRegion
        .Value = .Value
        f = .Rows.Count:    c = .Columns.Count
        .Sort key1:=Range(.Columns(2).Address), order1:=xlAscending
        For i = 1 To .Rows.Count
            codigo = .Cells(i, 2)
            On Error Resume Next
                unicos.Add codigo, CStr(codigo)
            On Error GoTo 0
        Next i
        For j = 1 To unicos.Count
            codigo = unicos.Item(j)
            cuenta = funcion.CountIf(.Columns(2), codigo)
            fila = funcion.Match(codigo, .Columns(2), 0)
            Set area = .Rows(fila).Resize(cuenta, c + 3)
            area.Cells(1, 1).Select
            tipo = area.Cells(1, 1)
            If UCase(Trim(tipo)) = "COSECHA" Then
                area.Cells(1, 4) = Date
                area.Cells(1, 5) = Time()
            End If
        Next j
        Set datos = .CurrentRegion
        .Sort key1:=Range(.Columns(3).Address), order1:=xlAscending
        .Columns(3).EntireColumn.Delete
        .CurrentRegion.EntireColumn.AutoFit
    End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas