
Tengo una tabla de Facturas y Fecha de modificación. Esto proporciona múltiples entradas de facturas con múltiples fechas por persona. Lo que estoy tratando de hacer es encontrar las fechas entre la primera y la última entrada para tener un marco de tiempo de cuánto tiempo tomó de principio a fin.
Vea la tabla de abajo:
Factura | Ingresado/Modificado | Última modificación | Estado |
---|---|---|---|
N805844 | 5/2/2024 | José | El último |
N805844 | 5/2/2024 | esteban | Previo |
N805844 | 28/12/2024 | Miguel | Previo |
N808961 | 4/1/2024 | José | El último |
N805961 | 3/1/2024 | José | Previo |
N805961 | 2/1/2024 | Miguel | Previo |
N805961 | 2/1/2024 | esteban | Previo |
Estaba tratando de trabajar en una columna auxiliar para identificar el número de factura y luego restar todos los valores de fecha que deberían producir un solo número: días hasta la finalización. Estoy teniendo en cuenta el "último" y el "anterior" porque podría resultar útil.
He pensado en una fórmula Max/Min en otra hoja, pero no estoy seguro de cómo podría hacerlo.
Luego cambiaré esta tabla para mostrar los días hasta su finalización. Cualquier ayuda sería apreciada.
Respuesta1
Hay bastantes formas de lograr esto, intentaré publicar algunas formas, hasta donde sé, usando Excel Formulas
. También hay una opción flexible y es el uso de POWER QUERY
.
Usando fórmulas de Excel:
• Fórmula utilizada en la celda F2que devuelve las facturas únicas.
=UNIQUE(A2:A8)
• La fórmula utilizada en la celda G2devuelve la fecha de inicio y la fecha de finalización.
=AGGREGATE({15,14},6,B$2:B$8/($F2=A$2:A$8),1)
• Durante #
días coloque lo siguiente en la celdaI2
=H2-G2+1
Es necesario completar todas las fórmulas anteriores excepto la de facturas.
Vía alternativa 2
La siguiente fórmula es MS365
exclusiva.
=LET(
_UniqInv, UNIQUE(A2:A8),
_LastestDate, MAXIFS(B2:B8,A2:A8,_UniqInv),
_PriorDate, MINIFS(B2:B8,A2:A8,_UniqInv),
_DataBody, HSTACK(_UniqInv, _PriorDate, _LastestDate, _LastestDate-_PriorDate+1),
VSTACK({"Unique Invoice","Prior Date","Latest Date","# Of Days"},_DataBody))
- Uso de
UNIQUE()
la función para devolver facturas únicas. - Se utiliza
MAXIFS()
para devolver la última fecha. - Utilizando
MINIFS()
para devolver la fecha de inicio. - Usar
HSTACK()
para fusionar los tres anteriores y hacer una resta con la segunda y tercera variable para devolver#
los días. (Nota:El número de días incluye todas las fechas anteriores; si no desea lo mismo, excluya+1
). - Por último, use
VSTACK()
para agregar el conjunto junto con un encabezado.
Otra forma es utilizar la nueva función habilitada para beta en MS365
:GROUPBY()
=LET(
_Data, DROP(GROUPBY(A2:A8,B2:B8,HSTACK(MIN,MAX),0,0),1),
_NoOfDays, INDEX(_Data,,3)-INDEX(_Data,,2)+1,
VSTACK({"Unique Invoice","Prior Date","Latest Date","# Of Days"},
HSTACK(_Data,_NoOfDays)))
Y esto también se puede lograr usando Power Query
, disponible en Windows Excel 2010+
yExcel 365 (Windows or Mac)
Para utilizar Power Query siga los pasos:
- Primero convierta los rangos de origen en una tabla y asígnele el nombre correspondiente; para este ejemplo lo he nombrado como
Table1
- A continuación, abra una consulta en blanco desde DataTab --> Get & Transform Data--> Get Data--> From Other Sources-->Blank Query
- Lo anterior permite que Power Queryse abra la ventana, ahora desde HomeTab --> Advanced Editor--> Y pega lo siguiente M-Codeeliminando lo que veas, y presionaDone
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"Invoice"}, {{"Start_Date", each List.Min([#"Entered/Modified"]), type datetime}, {"End_Date", each List.Max([#"Entered/Modified"]), type datetime}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "No_Of_Days", each Duration.Days([End_Date]-[Start_Date])+1),
#"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Invoice", type text}, {"Start_Date", type date}, {"End_Date", type date}, {"No_Of_Days", Int64.Type}})
in
#"Changed Type"
- Por último, para volver a importarlo a Excel--> Haga clic en Close & Loado Close & Load To--> El primero que hizo clic creará un archivo New Sheetcon el resultado requerido, mientras que el segundo mostrará una ventana que le preguntará dónde colocar el resultado.