首先,对标题感到抱歉,因为它可能无法准确解决我所面临的问题,但与之相关。它相当复杂。
我有一个像这样的Excel工作表
Date | Time | Table | Bill Number | Unique ID | Status <br>
2019/01/01 0:20:00 A1 0 ABCDEF Checkin
2019/01/01 0:25:00 A1 112 ABCDEF First Order
2019/01/01 0:26:00 A1 112 ABCDEF Default
2019/01/01 0:27:00 A1 112 ABCDEF Checkout
在这里,我试图将Table
A1
的总持续时间从checkin
到checkout
Checkin
时间为0:20:00,checkout
时间为0:27:00
,表示7分钟。
但是问题是签入不显示账单号,仅当有First Order
时显示账单号,112
是A1
的账单号。
我想要的是将unique ID
与Table
链接并合并Bill Number
,以便可以从Bill Number
计算持续时间。
或者,以A1
作为账单号获取112
的持续时间的最佳解决方案是从登机到结账。 ?
由于唯一ID是唯一的,并且在客户checkin
一经链接,则它也与firstorder
之后发出的同一客户,同一表和同一帐单号链接
答案 0 :(得分:0)
这是一个学习如何在Excel中建立逻辑解决方案的好问题。
在数据右侧创建许多新列。不必担心使用过多的逻辑,只需要正确的逻辑即可。我将假设您的数据在A-F列中,而我们正在处理第3行。
G列应为CheckoutID:= IF(F3 =“ Checkout”,E3,“”)
如果使用类似的方法,则会在新列中隔离所有Checkout行。这样,每个UniqueID就会有一个值。
据我所知,您需要的唯一不在该行上的信息就是登记时间。
所以在Columm H中,我们做了棘手的部分:
= IF(G3 =“”,“”,MAXIFS(B:B,E:E,G3,F:F,“ Checkin”))
这表示如果我们在G3中有一个值,那么这是一个Checkout行,然后查找所有检查时间(B:B)中的最大值,其中我们的G3值与原始唯一ID列中的值(E :E)。然后确保我们只在消息列(F:F)中查找“签到”。
它应该将值带回到签入时间的结果列中,但只能在签出行中。它可能看起来像一个数字,但是如果您将该列设置为时间格式,它将看起来像您的“时间”列。时间只是一天的一小部分。
如果然后在该行上求出该值与B列之间的差,则将得到它们在那里的天数。您希望分钟数乘以一天中的分钟数1440。
第一列:
= IF(G3 =“”,“”,(B3-H3)* 60 * 24)
过滤掉空白行,应该这样做。