如何根据收益公告的频率使用基本应用程序的Visual Basic对Excel表中的EPS数据进行有条件的重新排序?

时间:2014-12-02 01:02:06

标签: bloomberg excel vba

我已经从Bloomberg下载了大量资产一年的每股收益数据。结果表测量4行和大约3000列。有些列包含四个值,有些列包含两个值,有些列只包含1个,因为报告要求不同:

  • 有些公司每年公布收入(31/12:1价值)
  • 有些公司每半年公布一次收入(31/6和31/12:2价值)
  • 有些公司每季度公布收入(31 / 3,31 / 6,31 / 9,31 / 12:4价值)

表值(B17:DKZ20)前面有一列公告日期(A17:A20),对应于我列表中第一家公司的季度公告,因为这是可能的最高频率,涵盖所有可能的收益公告日期(31/03; 31/06; 31/09; 31/12)。

因为我用过:

Range(B17:DKZ17).Formula = "=BDH([Ticker], ""IS_EPS"", [Beginning Date], [End Date], ""Dates, Period"", ""H,M"")"

使用可选参数隐藏日期以便直接显示彼此相邻的值,这可以更明确地写为:

""Dates = Hidden""

该表现在只是按照订单的顺序包含收益公告,也就是说,季度收益公告正确显示日期,但是年度公告显示为在31/03(当31/12时)这是正确的)半年度公告显示为已于31/03和31/6(当31/06和31/12正确时)。

为了纠正这个问题,我需要做的是:

  1. 从只有一个条目(年度)三个单元格的列中移动条目(从单元格1到单元格4);
  2. 将条目从具有两个条目(半年度)的列中移出,从单元格1和2到单元格2和4.
  3. 如何使用Visual Basic(VBA)以执行步骤1.和2的方式操作表?是否有移动值的命令或是否必须进行条件切割和粘贴?

1 个答案:

答案 0 :(得分:0)

有条件的剪切/粘贴可以正常工作。通常,直接分配(即Range("A1").Value = Range("A2").Value)比剪切/粘贴快得多。