x******o 发帖数: 165 | 1 我们是个广告公司,sales组的人每天在一个excel表格中输入每个广告的start date,
end date,以及我们需要投放的总数量,每日投放数量(总数量/起止间隔天数),想
请教一下大家用什么方法可以实现?Excel VBA? SQL? 还是别的?
复杂点在于列数很少,但转成行的话得每一天+网站为一行,列数和行数不相等,行数
远大于列数。向各位数据统计大牛求教!
原始数据为:
广告投放网站,开始时间, 结束时间,总投放数量, 每日投放数量
abc.com, 4/1/2012, 4/30/2012, 30000, 1000
esbn.com, 3/1/2012, 3/15/2012, 10000, 666.67
answer.com, 7/1/2012, 8/1/2012, 50000, 1612.9
...
现在要把每一列中起止日期之间的所有日期全转化为行,比如abc.com 那一列,
开始时间和结束时间间隔30天,那么这一列就转化为30行,转化后的数据结构为如下:
日期,广告投放网站,每日投放数量
3/1/2012, esbn.com, 666.67
3/2/2012, esbn.com, 666.67
3/3/2012, esbn.com, 666.67
.
.
.
3/15/2012, esbn.com, 666.67
4/1/2012, abc.com, 1000
4/2/2012, abc.com, 1000
.
.
.
4/30/2012, abc.come, 1000
7/1/2012, answer.com, 1612.9
7/2/2012, answer.com, 1612.9
.
.
.
8/1/2012, answer.com, 1612.9 | x******o 发帖数: 165 | 2 自己顶一下,求大牛莅临指导!
,
【在 x******o 的大作中提到】 : 我们是个广告公司,sales组的人每天在一个excel表格中输入每个广告的start date, : end date,以及我们需要投放的总数量,每日投放数量(总数量/起止间隔天数),想 : 请教一下大家用什么方法可以实现?Excel VBA? SQL? 还是别的? : 复杂点在于列数很少,但转成行的话得每一天+网站为一行,列数和行数不相等,行数 : 远大于列数。向各位数据统计大牛求教! : 原始数据为: : 广告投放网站,开始时间, 结束时间,总投放数量, 每日投放数量 : abc.com, 4/1/2012, 4/30/2012, 30000, 1000 : esbn.com, 3/1/2012, 3/15/2012, 10000, 666.67 : answer.com, 7/1/2012, 8/1/2012, 50000, 1612.9
| j******o 发帖数: 127 | | x******o 发帖数: 165 | 4 SAS真可以做吗?该如何做?给点提示?
【在 j******o 的大作中提到】 : SAS
| b*****n 发帖数: 685 | | x******o 发帖数: 165 | 6 牛人给一点提示?我有学过R
【在 b*****n 的大作中提到】 : 这么simple,R和MATLAB都能搞定
| h******e 发帖数: 1791 | 7 excel-paste special- transparent 行吗?
,
【在 x******o 的大作中提到】 : 我们是个广告公司,sales组的人每天在一个excel表格中输入每个广告的start date, : end date,以及我们需要投放的总数量,每日投放数量(总数量/起止间隔天数),想 : 请教一下大家用什么方法可以实现?Excel VBA? SQL? 还是别的? : 复杂点在于列数很少,但转成行的话得每一天+网站为一行,列数和行数不相等,行数 : 远大于列数。向各位数据统计大牛求教! : 原始数据为: : 广告投放网站,开始时间, 结束时间,总投放数量, 每日投放数量 : abc.com, 4/1/2012, 4/30/2012, 30000, 1000 : esbn.com, 3/1/2012, 3/15/2012, 10000, 666.67 : answer.com, 7/1/2012, 8/1/2012, 50000, 1612.9
| g****8 发帖数: 2828 | 8 这个excel自己就能做。用paste transpose。
你要是内容太多,写个vba也行,不过我觉得用鼠标点几下就行了,或者自己做个excel
的macro。 | x******o 发帖数: 165 | 9 谢谢答复。我主要是这个Excel表得自动更新,每天都有很多新的entry进来,我不能自
己用鼠标一个个去转。
另外我这个excel表连着Tableau dashboard, Tableau每天会去这个Excel表里扫一遍,
有新的数据进来就更新dashboard. 但前提是我必须让这个Excel的表格转化成我要的格
式。
是不是只能用VBA做?普通excel函数有没有可以用的?
我想过去的转化是这样的:
Sales们每天在sheet1里输入每个广告的start date, end date, volume,
在sheet2里的A column,A1-A150 cell里我先放上2012下半年剩下的所有日期2012/07/
16-2012/12/31,
sheet 2的B column可以用某个excel函数来把sales输入的那个sheet1中 (start date:
end date) 这个时间段的日期自动填充到sheet2的 B column。然后再产生相对应的C
column(每日投放量 volume).
sheet 3 就是用sumif函数把sheet 2里被每日被填充的date, volume累加
不知道有没有相关例子的链接可以学习一下? 谢谢大家!
excel
【在 g****8 的大作中提到】 : 这个excel自己就能做。用paste transpose。 : 你要是内容太多,写个vba也行,不过我觉得用鼠标点几下就行了,或者自己做个excel : 的macro。
| s******1 发帖数: 39 | 10 试试EXCEL PIVOT-TABLE?用STATA的话RESHAPE命令也可以搞定了。 | | | r*****e 发帖数: 264 | 11 R:
new.matrix <- t(old.matrix) | x******o 发帖数: 165 | 12 我这个不是简单的行与列的转置,因为列只有起止时间,但转成行必须有两个起止时间
之间所有的日期都列出来。
【在 r*****e 的大作中提到】 : R: : new.matrix <- t(old.matrix)
| g*********r 发帖数: 2847 | 13 VBA can do it easily.
general Excel functions can do it, too | x******o 发帖数: 165 | 14 哇,givemeoffer大师现身啦~
这个不用VBA真可以做吗?
我贴了个图,基本转化就是A2:E2内容要转成G2:I13的内容,因为起止时间(start date
-end date)共有12天,所以转化后会有12行。这个转化应该在G2:I13中如何写公式呢?
如果在A:E中不断加入entry, 怎样才能在G:I的列中使用公式,让它能够自动添加相应
的行内容呢?
谢谢!
【在 g*********r 的大作中提到】 : VBA can do it easily. : general Excel functions can do it, too
| g*********r 发帖数: 2847 | 15 to make the formula less complicated, we need an additional column, say, in
Cell f2, type "=C2-B2+1" and in Cell f3, type "=C3-B3+1+F2" and copy & paste
to the cells below.
then starting from Cell H3, type "=IF(ROW(H3)-ROW($H$2)+1<=OFFSET($A$2,MATCH
(H2,$A$2:$A$4)-1,5),H2,OFFSET($A$2,MATCH(H2,$A$2:$A$4),0))" and copy & paste
to the cells below. I used a smaple with 3 sites. you can adjust the
formula accordingly. Column I is a simple "offse"t function while column G
is a simple "if" function | g****8 发帖数: 2828 | 16 膜拜大师。
in
paste
MATCH
paste
【在 g*********r 的大作中提到】 : to make the formula less complicated, we need an additional column, say, in : Cell f2, type "=C2-B2+1" and in Cell f3, type "=C3-B3+1+F2" and copy & paste : to the cells below. : then starting from Cell H3, type "=IF(ROW(H3)-ROW($H$2)+1<=OFFSET($A$2,MATCH : (H2,$A$2:$A$4)-1,5),H2,OFFSET($A$2,MATCH(H2,$A$2:$A$4),0))" and copy & paste : to the cells below. I used a smaple with 3 sites. you can adjust the : formula accordingly. Column I is a simple "offse"t function while column G : is a simple "if" function
| l*******0 发帖数: 12 | 17 Can easily be done with any programming.
Here are SAS Codes.
DATA ad (DROP = StartDate EndDate i TotalAmt);
INFILE DATALINES DLM = ",";
INPUT WEB : $20. StartDate : mmddyy10. EndDate : mmddyy10. TotalAmt
DailyAmt;
DO i = 0 TO (EndDate - StartDate);
DATE = StartDate + i;
OUTPUT;
END;
DATALINES;
abc.com, 4/1/2012, 4/30/2012, 30000, 1000
esbn.com, 3/1/2012, 3/15/2012, 10000, 666.67
answer.com, 7/1/2012, 8/1/2012, 50000, 1612.9
;
RUN;
PROC SORT DATA =ad OUT = ad_sorted;
BY DATE;
RUN;
PROC PRINT DATA = ad_sorted;
FORMAT DATE mmddyy10.;
VAR DATE WEB DailyAmt;
RUN; | g****8 发帖数: 2828 | 18 问题是,楼主去哪里弄sas呀,公司的活,可不是随便就能用免费的。
【在 l*******0 的大作中提到】 : Can easily be done with any programming. : Here are SAS Codes. : DATA ad (DROP = StartDate EndDate i TotalAmt); : INFILE DATALINES DLM = ","; : INPUT WEB : $20. StartDate : mmddyy10. EndDate : mmddyy10. TotalAmt : DailyAmt; : DO i = 0 TO (EndDate - StartDate); : DATE = StartDate + i; : OUTPUT; : END;
| t*****0 发帖数: 30 | | l*******0 发帖数: 12 | 20 Don't have to use SAS. Can use any programming language. My point is a loop
does the trick.
【在 g****8 的大作中提到】 : 问题是,楼主去哪里弄sas呀,公司的活,可不是随便就能用免费的。
|
|