Excel VBA合并多个工作簿

问题:在网上下载了几只股票和上证指数的历史价格数据,每只股票的数据都是按月从2003年到2009年,包括交易日、开盘价、最高价、最低价、收盘价、成交量、调整后收盘价。下载的数据格式是csv(逗号分隔值文件),为了便于比较,要讲每只股票的数据并排放在一个Excel工作表中。

Sub MergeWorkbooks()
Dim FilesToOpen
Dim shtName As String
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename(FileFilter:="Comma _
Separated Value文件(*.csv),*.csv", MultiSelect:=True, Title:="要合并的文件")

If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "没有选中文件"
GoTo ExitHandler
End If

For I = 1 To UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(I)
Sheets(1).UsedRange.Copy
'shtName是每只股票数据的文件名,如:(600028.SS)中国石化.csv
shtName = Sheets(1).Name
'将数据粘帖到第二行以下
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Activate
[A2].End(xlToLeft).Offset(0, 7 * (I - 1)).Select
ActiveSheet.Paste
'第一行放上每只股票的名称,如:中国石化
Range("A1").Offset(0, 7 * I - 1).Value = Right(shtName, 4)
If I = 1 Then
'将不必要的数据隐藏
Range(Columns(2), Columns(6)).Select
Selection.Columns.Group
Else
'只留下股票的调整后的收盘价
Range(Columns((I - 1) * 7 + 1), Columns((I - 1) * 7 + 6)).Select
Selection.Columns.Group
End If
Application.CutCopyMode = False
'将打开的股票数据文件关闭,以节省内存空间
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name Then
wb.Close False
End If
Next
Next I

'设置合并后文件的属性
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Activate
ActiveSheet.Cells.Font.Name = "Arial"
Rows("1:2").Font.Bold = True
'冻结窗口,以便于每只股票和大盘数据比较
Range("H3").Select
ActiveWindow.FreezePanes = True
ActiveWindow.Zoom = 75
'隐藏数据
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub

Posted in Share | Tagged , | Leave a comment

Google要出新的操作系统

Chrome
Google的新操作系统将称为Chrome,和Google浏览器的名称一样。

早些时候,Google的创始人Larry Page和Sergey Brin就计划过要出操作系统和浏览器。但是可能是因为当时微软实在太强大了,Google还不足以与微软抗衡,所以一直没有什么动静,甚至Google还声称不会在自己不擅长的领域与别人竞争,不会费力气去做操作系统。而且历史上众多有名的大公司都企图在操作系统领域想和微软分享市场,包括IBM、Sun、Borland和Novell,他们都失败了。目前操作系统市场约90%份额由微软占据着,剩下10%是Mac和Linux。

然而现在的Google已经很强大了,甚至微软已经不是其对手了。当微软还在搜索领域企图苟延残喘再博一把的时候,Google已经把目光瞄向操作系统这块大蛋糕了。两年前,Google现任CEO,Schmidt说过要做浏览器,现在Google Chrome浏览器占3%的全球市场。现在Schmidt说要出新的操作系统,真正意义上的操作系统,不是一般的上网本的系统。先不管Google行不行,Google为什么这么做?因为Google才是现在的游戏规则制定者,它要这么做,因为现在和将来是网络的天下,而Google要建立它的网络帝国。via

Posted in Digg | Tagged , , , , , | 4 Comments

This radio rocks!

这是石头做的,真的是石头做的!好吧,我承认这是水泥做的,但它确实是真的水泥。让你感受石器信息化时代……via
radio1
radio2

Posted in Design | Tagged , | Leave a comment

这个时钟显示不是时间,而是“时光”

clock
这是一个时钟,名叫Good Afternoon Clock,来自日本的设计。钟的时针分针被从边缘射出的光线替代,神秘而又简洁,让人感觉到时光匆匆而逝的那种宁静和庄严。珍惜时光吧,因为她正远离你。via

Posted in Design | Tagged , , | 1 Comment

几张精彩的CG作品

下面几幅CG作品是从CGSociety转载过来的,作品实在是太美了,真的令人叹为观止。
Jack
Title: Captain Jack Sparrow
Name: Jeremy Roberts
Country: Canada
Software: 3ds max, Photoshop, ZBrush

Morgan
Title: The last move
Name: Jose Mª Lazaro
Country: España
Software: 3ds max, BodyPaint, mental ray, Photoshop, ZBrush


Obsolete

Title: Obsolete
Name: Pawel Hynek
Country: Poland
Software: 3ds max, VRay

Evil Witch
Title: EVIL WITCH
Name: Sven Geruschkat
Country: Germany
Software: 3ds max, mental ray, Photoshop

White Teeth
Title: White Teeth
Name: Jonathan Simard
Country: Canada
Software: 3ds max, mental ray, Photoshop

Posted in Design | Tagged , , , , , , , , | Leave a comment

真的存在美人鱼?

Mermaid
以色列海法市旁的小镇科雅特扬(Kiryat Yam),近日不断有游客声称说见到了美人鱼。声称者说,他们看到的一半像女孩一半像鱼,游起来像海豚一样,摆了好些个pose才钻到水里去的。由于据声称的目击都发生在日落时分,所以该镇近来吸引了大量游客和附近居民,他们都企望能一睹传说中的神奇美人鱼。
Kiryat Yam
估计该地当局怎么也不会想到有这么好的事情,不过既然能吸引众多游客前来消费,倒也乐哉!他们索性提出了悬赏,第一个能拍摄到美人鱼或者能证明美人鱼确实存在的,将获得一百万美元!先不管到底会不会有美人鱼存在,首先这个悬赏就将吸引大量游客前来。这不得不怀疑是不是当局宣玉枕纱厨传部门想出来的奇招了。via

英国著名画家约翰·威廉·沃特豪斯(John Walliam Waterhouse)笔下的美人鱼:
Mermaid

Posted in Digg | Tagged , , , , | 1 Comment

关于抵御僵尸攻击的数学建模

Zombies

根据加拿大几个数学家的研究,可以有方法有效地抵御僵尸的攻击,主要攻略就是“不停地猛烈攻击它们”!via

他们的研究报告发表在一本关于传染性疾病的书上,题为When Zombies Attack!: Mathematical Modelling of an Outbreak of Zombie Infection(pdf)。作者写道:僵尸的爆发将是灾难性的,我们必须迅速地处理掉僵尸,否则我们就挂了;当然,如果认真起来,我们的假设不太现实,但是我们可以将模型同实际生活中的事件联系起来,比如政治的忠诚度、严重的传染疾病等等。

在这篇文章中,作者着重研究现代僵尸,与古代非洲的伏都教和民间的僵尸不同。作者考虑了几种解决僵尸的方法:隔离消灭、治疗(未完全变为僵尸的人类)等等,但是最终表明只有一个办法才能成功对付僵尸,那就是:彻底根除。在条件允许的情况下,不断进行猛烈地攻击就能最终消灭掉僵尸。如果我们攻击得不够快,那么整个人类将在有限时间内全部变成僵尸,文明将被毁灭(生化危机?)。

那么我们究竟要以多快的速度进行攻击才能不让僵尸泛滥?在这篇研究文章中,作者们假设了三个变量:S(susceptibles)为容易被感染成僵尸的人数,Z(zombies)为僵尸的数量,R(removed)为被消灭掉的僵尸数量。如果感染在一个50万人口的城市里爆发,那么僵尸数将在三天内超过易受感染的人数。具体的分析请阅读下面的原文。

Citation: “When Zombies Attack!: Mathematical Modelling of an Outbreak of Zombie Infection,” [pdf] by Philip Munz, Ioan Hudea, Joe Imad and Robert J, Smith?. In “Infectious Disease Modelling Research Progress,” eds. J.M. Tchuenche and C. Chiyaka, Nova Science Publishers, Inc. pp. 133-150, 2009.

Posted in Science | Tagged , , | Leave a comment

银河系周围藏着一个邻居

一个巨大的星系可能就藏在我们的银河系周围,我们看不到它,但是能感觉到。

加州伯克利的Sukanya Chakrabarti(这个是大美女哦!)和Leo Blitz发现银河系边缘星云的扰动可能是由附近很大的星系造成的。他们做了大量的模拟后发现,这个看不见的星系可能有相当于银河系百分之一的质量,也就是太阳质量的100亿倍。这是相当大的数字,也就意味着这个星系有着和我们银河系里最大的星云——大麦哲伦云(LMC)——差不多大的规模。

Chakrabarti说,目前这个星系距离我们大概有30万光年的距离,大约是大麦哲伦云的两倍远。模拟显示它的轨道是一个细长的椭圆形,大约3千万年以前它一度距离银河系中心的距离只有1.6万光年(比地球离中心还要近),当它扫出去的时候就影响了银河系的外围物质。

Chakrabarti解释说,之所以我们看不到这个星系是因为它不是一个亮的星系。大麦哲伦云(LMC)因为有非常多很亮很年轻的星星所以显得很亮,而这个很暗很庞大的星系很有可能是死的,它仅仅包含了一堆很老的星星。这个星系在我们银河系同样的轨道圆盘上运行着,对我们来说,它现在可能就藏在银河系很厚的星云背后。Chakrabarti希望在后续的研究中能精确确定该星系的具体位置,好让天文学家找到它。早在1840年左右天文学家就是通过发现天王星的运行轨道的异常而发现了海王星的。而这次如果这个星系能被证明真的存在的话,那么它将是科学家第一个通过引力发现的星系而不是由星光发现的。英文原文

大麦哲伦云(Large Magellanic Cloud)
LMC
银河系距离标尺
galaxy

Posted in Science | Tagged , , , , , | Leave a comment

印度“蜘蛛侠”徒手爬墙

我们以前报道过英国的“蜘蛛侠”爬BBC大楼的事情,不过那个小伙子是利用了自己DIY的一个真空手套的吸力才得以爬上大楼了(而且还有保险绳拉着!)。下面这个视频绝对会让那个英国的“蜘蛛侠”汗颜,因为这个印度“蜘蛛侠”人家是徒手爬墙的!

Posted in Video | Tagged , | Leave a comment

把地球挪到一个凉快的地方去

planet
科学家们为防止地球变得越来越热,他们想出了一个新招,你绝对想不到的:把地球挪一下,挪到一个更凉快的地方。(这就好像暑假待在学校宿舍觉得太热,只好去图书馆等有空调的地方乘凉了。)

其实这做起来也不难,你只要找几个彗星让它们牺牲一下,撞几下地球,地球的轨道就改变了。然后我们的地球就会被移到太阳系里一个更加安全更加凉快的地方啦。这个惊人的想法是由一帮Nasa的工程师和美国天文学家共同构思的,他们说这样会使得咱们这个地球的寿命增加60亿年!

美国Nasa加里福利亚研究中心,格雷·劳克林(Greg Laughlin)博士说:“这样的技术也不是很难实现,和我们把即将撞入地球的小行星改道时用的技巧差不多。所不同的是,我们在做法上要更加优雅精确,毕竟这是我们住的地方,不能那么粗暴。”

由Laughlin以及他的同事Don Korycansky和Fred Adams共同提出的具体实施的方案是,引导一个小行星让它刚刚好与地球擦肩而过,这样就可以利用引力把地球绕太阳的轨道速度提高,从而地球将移到一个离太阳更远的轨道上。把小行星再引到木星或者土星附近,从而有足够的能量把小行星再引回到地球附近,再重复之前的过程,这样地球就可以到达一个更远的轨道了。

所要做的就是发射一个火箭到一个小行星附近,并在适当的时候引爆,其实就是基本的火箭科学技术。虽然太阳在10亿年后温度变得更高,将严重扰乱我们的生物圈,届时我们可能将直接被烤焦了,但是这样的计划确实能提供短期内解决全球变暖的一个解决方案。

当然这样的计划也有比较危险的方面,太空工程师们必须把一切都算准咯,不然的话,失之毫厘谬之千里,一点点的误差可能就会导致毁灭性的灾难。仅仅一次直径100千米的太空物体对地球的撞击也会导致地球上生命消失的干干净净。

另一个值得关注的问题是,月球怎么办?最新一期的《科学美国人》指出,如果地球被推出现在的轨道的话,那么我们美丽的月亮很有可能就被甩了出去,将对地球的气候造成很大影响(不仅仅是没得赏月了)。

Laughlin也承认会有这些危险,他说:“我们的研究也表明地球在太阳系里目前的位置是最稳定和谐的。当然,我们的工作也有实际的建设性。要把地球弄到一个更稳定更远的轨道上,要穿过一个不稳定的区域,这需要及其谨慎地推动和操作。如果任何外星智慧生命在观察我们太阳系的话,那必然会发现太阳系因此所发生的变动,他们就会意识到另一个智慧生命的存在。这对我们来说也是一样的,而且我们也正在观察,如果其他的星球发生了移动,很有可能就是外星人弄的。”
英文原文

Posted in Science | Tagged , , , , | Leave a comment