如何根据收益公告的频率,使用应用程序的视觉基础有条件地对 Excel 表中的 EPS 数据重新排序



我已经从彭博社下载了一年内大量资产的每股收益数据。生成的表包含 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。

如何使用使用 Visual Basic (VBA( 操作表,以便执行步骤 1. 和 2.?是否有移动值的命令,还是必须有条件剪切和粘贴?

有条件的剪切/粘贴可以正常工作。一般来说,直接转让(即 Range("A1").Value = Range("A2").Value ( 比剪切/粘贴快得多。

最新更新