如何根据每列中的条目数有条件地使用Microsoft Visual Basic(VBA)重新排序Excel表的元素?

时间:2014-12-02 00:32:52

标签: excel vba date excel-vba bloomberg

我已经从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)

我会将数据读入2D vba数组;将数据字段重新排序到您的规范,然后将数组写回工作表。阅读和写作可以一步完成;在数组中移动东西比在工作表上移动要快得多。