Excel公式来计算每天在系统中的用户点击次数

这是我以前提出的问题的延续,我已经把我的全球目标列入项目。

Excel链接:

https://drive.google.com/file/d/0B5W4CgZKsARFSmhqV0ZSM1lBSkE/view?usp=sharing

任务:任务是每天在应用程序中收集用户的“号码匹配”。 我可以从系统中收集一个日志,这个日志会给我用户的名字和他们的最后命中date和命中总次数(这个命中总日数不是每日,而是所有天的总和)。 我需要制定一个公式,每天分离这些

屏幕截图:要更好地理解我已经创build了几个截图,我正在寻找实施。

excel有两个选项卡raw_datavalue_capture 。 我将使用raw_data粘贴从系统日志和value_capture收集的原始数据,以生成日复一日的统计数据

Raw_data标签:它有三个细节,1.date。 2.名称和总计3次点击(总点击次数是该用户在所有日子里的总点击数)

在这里输入图像说明

value_capture:它具有所有的用户名和所有的date标记每一天和一列显示所有的命中。

在这里输入图像说明

现在,考虑date20141120的示例,所有用户命中是0. raw_data针对所有用户显示0

在这里输入图像说明

所以value_capture必须被更新

在这里输入图像说明

现在在第二天20141121,有一些用户点击。 (注意:如果没有对用户的命中,则只有前一个date,即date只有在当天有命中时才会更新)

在这里输入图像说明

用这个细节更新了value_capture

在这里输入图像说明

在20141122,有更多的点击对用户

在这里输入图像说明

value_capture更新了细节。 因为raw_data将显示对用户的命中总数,所以对特定命令的计算方式将是总命中 – 上一个date命中

在这里输入图像说明

我被卡在一个方法来发展在这里的Excel的公式。寻找一个想法来实现这一点。

注意:用户名将固定在两个选项卡上,但在raw_data选项卡中可能以不同的顺序出现。

UPDATE

我的raw_data表会每天更新,我希望我的公式结果在value_capture表中固定,在更新(删除)表raw_data

所以正如我在回答你的上一个问题时所提到的, 在删除/删除其参考单元格后保存公式结果的唯一方法是使用macros
首先
您需要一个合适的公式来从raw_data表中拉出数据,然后计算公式所在的特定单元格与该行中之前单元格之和之间的差异。

我们需要两个公式:
一个用于 value_capture表单的B列
第二个 是你桌子的其余部分 为什么? 因为在第一列中,你不会计算它与前一个单元格之间的差异,因为没有任何差异。 所以这个公式有一点区别

公式一:(粘贴到B3并拖拽填充)

 =SUMIFS(raw_data!$C:$C;raw_data!$B:$B;$A3;raw_data!$A:$A;B$2) 

公式二:(粘贴在C3中 ,拖动并填充到右边)
=IF(SUMIFS(raw_data!$C:$C;raw_data!$B:$B;$A3;raw_data!$A:$A;C$2)-IF(ISNUMBER(B3);SUM($B3:B3);0)>0;SUMIFS(raw_data!$C:$C;raw_data!$B:$B;$A3;raw_data!$A:$A;C$2)-IF(ISNUMBER(B3);SUM($B3:B3);0);0)

正如您在单元格A3中的用户屏幕截图中看到的那样, 20141120date的值为4 ,第二天的值为14,但单元格获得差值,即10 ,然后第二天,值增加到16 ,所以D3的单元格值变成2 ,这是当天的16和以前的总和的差值。 这一直持续到今天的值是24,所以细胞得到7,因为以前的总和是17

在这里输入图像说明

既然你们已经正确地把握了自己的价值观,就与前几天的差距来说,现在是时候让它们固定下来并且永恒了。
为此,你需要一个macros:

 Sub saveMyData() Dim ws As Worksheet Set ws = ActiveSheet ws.Range("B3:L18").Copy ws.Range("B3").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub 

所以显然你需要更新这个范围“B3:L18”,这是我在示例表中只有。

现在,这个macros将所有的值从这个范围复制粘贴 它自己,所以你失去了你的公式。

所以,每天都需要到同一张表的第21行,从C21获取公式,并将其粘贴到第3行的某个位置,从那里继续捕获新的一天的数据。 (你不需要第一个公式,因为它只在第一列第一天使用一次)。

这是使用公式捕获值的唯一方法,然后将公式的结果保存到原来的位置,然后获取新数据。
我想不出有什么其他的策略可以让它更自动化,除了写mova VBA,让excel去找你前一天离开的地方,把公式粘贴到正确的地方,然后重复这个任务。

所有这些公式都是数组公式,所以按Ctrl + Shift + Enter来计算公式。

请记住,将公式调整到您的区域设置,我想通过replace“;” 与“,”。

这里是从这个链接下载的示例表

告诉我,如果你有任何问题,不要忘记回答我的问题在关于你更新date在value_capture第2行的方式。

您正在寻找的公式是SUMIFS

 =SUMIFS([SUM RANGE],[RANGE 1],[VALUE 1],[RANGE 2],[VALUE 2]) 

SUM RANGE是您希望SUM的值的列,因此是您的列C.对于范围1,您要selectID的范围。 VALUE 1将等于A行X列中的值。对于RANGE 2,它将是date列。 对于VALUE 2,它将是列标题中的值。

把它放在一起,你有类似的东西:

  =SUMIFS(raw_data!$C:$C,raw_data!$B:$B,$A3,raw_data!$A:$A,B$2) 

这将在单元格B3中,您可以从那里填充其他单元格。

如果一天的总点击次数是所有点击次数的滚动计数,那么在方程式结束时,您需要减去前几天的总和。

例如:

  =SUM(B3:B4) 

这只需要添加到后续的列(不是第一个)。

所以C3中的方程将是

 =SUMIFS(raw_data!$C:$C,raw_data!$B:$B,$A3,raw_data!$A:$A,C$2)-SUM(B$3:C3) 

然后在D3中变成

 =SUMIFS(raw_data!$C:$C,raw_data!$B:$B,$A3,raw_data!$A:$A,D$2)-SUM(B$3:D3) 

尝试Sumifs公式

 =SUMIFS(raw_data!$C:$C,raw_data!$B:$B,$A3,raw_data!$A:$A,B$2)-IF(ISNUMBER(A3),A3,0)