作者moodyblue ()
看板Stock
标题[心得] Excel如何取得股票代码清单
时间Sun Jun 17 09:55:25 2018
Excel如何取得股票代码清单
网志图文版:
http://www.b88104069.com/archives/4315
上一节成功取得单一公司三个年度的损益表,实务上,无论出於产业财务报表分析、或者
是投资者比较各档股票基本面,会针对多档股票的损益表作比较,因此有需要同时取得多
家公司的损益表资料。在这里有个先决条件,网址上皆是股票代码,如果要以公司名称对
应到股票代码,有必要先取得对照清单,在这一节便介绍如何运用网页资料,整理出符合
需要的清单。
一、於「公开资讯观测站」选择「汇总报表」、「资讯揭露」、「每月营收」、「采用
IFRSs後营业收入汇总表」、「每月营业收入汇总表」:
http://mops.twse.com.tw/mops/web/index。
二、接着是「国内上市」、年度「107」、月份「1」、「查询」,再按下面的「请选点选
这里」。
三、另跳视窗的网址:「
http://mops.twse.com.tw/nas/t21/sii/t21sc03_107_1_0.html
」,利用Excel下载网页资料,几乎如实呈现了网页的内容。不过仍然尚有两点事项待处
理,第一项是有很多营收相关的栏位,但其实於此只需要前面两栏「公司代码」及「公司
名称」,另外除了有公司代码的资料行,有许多文字行和空白行,其实也不需要。
四、为顺利产生公司代码清单,首先输写如下程式码,重点在於了解「
UsedRange.Rows.Count」和「TypeName」的用法。
R = Worksheets("三").UsedRange.Rows.Count
Sheets("五").Cells(1, 3).Value = R
从程式码的英文单字顾名思义,这是计算工作表「三」内容范围有多少行的固定语句,并
且要在工作表「五」的第一行第三栏呈现所计算出来的「R」值。
StockID = Worksheets("三").Cells(i, 1).Value
Sheets("五").Cells(i, 1).Value = TypeName(StockID)
将工作表「三」储存格(i, 1)的值设定为变数「StockID」,然後再将该变数的资料型态
输入到工作表「五」储存格Cells(i, 1)。
五、前二十行资料,共有三种型态,「String」为文字 、「Empty」空白 、「Double」
为数字,「C1」储存格的「1020」代表步骤三所下载的网页内容共有1020行,稍微垂直卷
动这些资料,不难发现第一栏(A栏)的後面1020行中,和前面二十行资料相同,其实总
共就三种型态,而且公司代码所属行都是「Double」,分析出这个规律之後,接下来才能
做相对应的处理。
六、在步骤四的基础上,进一步编写程式码,重点在加入资料型态的判断句,并且将符合
的资料复制到新工作表上。
R = Worksheets("三").UsedRange.Rows.Count
For i = 1 To R
在第四章第五节「多余资料删除」中,介绍过「For i = 1048576 To 2 Step -1」的终极
用法,它虽然能完整扫过工作表,但其实在大部份资料没有那麽多行的情况,这样的设计
只是执行空转,白白耗费了计算机资料,所以利用「UsedRange.Rows.Count」先自动评估
有多少行资料,再设计「For i = 1 To R」精准回圈是较为聪明的作法。
StockID = Worksheets("三").Cells(i, 1).Value
If TypeName(StockID) = "Double" Then
j = j + 1
Sheets("三").Cells(i, 1).Copy Sheets("七").Cells(j, 1)
Sheets("三").Cells(i, 2).Copy Sheets("七").Cells(j, 2)
End If
先取得工作表「三」第一栏 (A栏)的内容,赋值予变数「StockID」,判断其资料型态是
否为数字「Double」,如果是的话,设置变数「j = j + 1」,等於是一个从1开始正整数
的计数器,这是编写程式的惯常用法,最後将工作表「三」符合条件的特定行,第一栏公
司代码和第二栏公司名称复制到工作表「七」的第一栏第二栏,依照正整数「j」的顺序
。
七、执行结果一如预期!
在资料量钜大的情况下,都会有像编码原则和代码对照表这一类的东西。一方面是需要将
资料分门别类,才能有序整理及快速搜寻,另一方面现在所有资料都会以电子形式储存,
所以要有个合乎电子格式的识别代码。很多时候,我们很需要一份完整清单,方便针对资
料作进一步处理,可是又没办直接取得这份清单,这一节所介绍的方法也许不尽完美,但
应该极具参考价值。
本文内容取自《人人做得到的网路资料整理术》,博客来书店网址:
http://www.books.com.tw/products/0010775391。
延伸阅读:
Excel如何取得公开发行公司财务报表
http://www.b88104069.com/archives/4312
Excel如何取得多期损益报表
http://www.b88104069.com/archives/4313
VBA如何修改网址下载财务报表
http://www.b88104069.com/archives/4144
--
周末,我们继续Excel:=>21.心得=>5.其他=>3.office
会计人的Excel小教室:
https://www.facebook.com/acctexcel
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 112.20.96.23
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Stock/M.1529200529.A.7AD.html
1F:推 tigergtr : 好用心,好多功能没月过 06/17 09:58
2F:推 black1x2y3z : 推 06/17 10:03
3F:推 rex921 : 用心推一个! 06/17 10:04
4F:推 charlie0810 : 先推再说 06/17 10:04
5F:推 grotwpig645 : 用心给推 06/17 10:07
6F:推 yauger : 推 06/17 10:10
7F:推 jellyno1 : 推 06/17 10:13
8F:推 sunday2266 : 推 06/17 10:57
9F:推 TarokoSam : 感谢分享 06/17 11:00
10F:推 jeromeshih : 推 06/17 11:04
11F:推 pudge : 推 06/17 11:19
12F:推 Aquarius126 : 推 改天研究 06/17 12:02
13F:推 thornback : 推 06/17 12:04
14F:→ Huangyufei : usedrange.rows.count好像对於前面有空白行的页面不 06/17 12:04
15F:→ Huangyufei : 能得到想要的结果吧…… 要从头到尾无遗漏我觉得可 06/17 12:06
16F:推 l570199 : 推 06/17 12:08
17F:推 HERMAN06 : 推 06/17 12:08
18F:→ Huangyufei : 用activesheet.usedrange.rows.count + activesheet 06/17 12:09
19F:推 kkoo5888 : 推 感谢分享 06/17 12:09
20F:→ Huangyufei : .usedrange.row-1 06/17 12:09
21F:推 daniel810909: 推 06/17 12:14
22F:→ mortleo : 推 06/17 12:48
23F:推 JOKER1985 : 推 06/17 12:49
24F:推 evolution999: 推 06/17 12:54
25F:推 trader888 : 推用心 06/17 13:51
26F:推 TAIHO : 这个不推不行 06/17 13:58
27F:推 nfsong : 推 06/17 13:59
28F:推 chiayigo : 推认真分享文 06/17 14:17
29F:推 YOTO0282 : 推 06/17 14:27
30F:推 atckmax823 : 推 06/17 14:37
31F:推 a23450787 : 推 06/17 16:50
32F:推 GiGinder : 用心 推 06/17 16:55
33F:推 finalassam : 推 06/17 23:20
34F:推 kruscal : 推 06/18 09:51
35F:推 Petrovsky : 推 很认真 06/18 22:51
36F:推 e223833755 : 推 06/19 11:11