XLOOKUP 用于代码映射
假设您的原始数据在 transaction_code 列中包含交易代码,并且您在 Lookups 工作表中维护一个包含 code 和 bucket 列的映射表。
映射示例:
| code |
bucket |
| P |
市场购买 |
| S |
市场出售 |
| M |
期权行权 |
| G |
赠与 |
| F |
预扣税 |
使用:
=XLOOKUP([@transaction_code],Lookups!A:A,Lookups!B:B,"Unmapped")
这为您提供了用于数据透视表的清晰 transaction_bucket 字段。
如果您看到 Unmapped,那很好。这意味着工作簿正在告诉您真相。
标记多名内部人购买同一发行人股票的情况
一个有用的筛选条件是,在同一个月内,是否有不止一名内部人购买了同一发行人的股票。
如果您有 issuer_name(发行人名称)、year_month(年月)、insider_name(内部人姓名)和购买标志,一个简单的计数可以提供帮助。在辅助列中:
=COUNTIFS(tblInsider[issuer_name],[@issuer_name],tblInsider[year_month],[@year_month],tblInsider[transaction_code],"P")
如果您的数据源使用标签而非代码,请相应调整。
一个更精细的版本是计算不同的内部人数量,现代 Excel 可以通过动态数组处理,尽管并非在所有表格设置中都能优雅地实现。在单独的工作表中,您可以使用:
=COUNTA(UNIQUE(FILTER(tblInsider[insider_name],(tblInsider[issuer_name]=A2)*(tblInsider[year_month]=B2)*(tblInsider[transaction_code]="P"))))
这看起来很复杂,但它确实有效。
每家发行人的最新申报
如果您想快速检查最新情况:
=MAXIFS(tblInsider[filing_date],tblInsider[issuer_name],[@issuer_name])
这对于列出每家发行人及其最新申报日期的覆盖范围表非常有用。
按发行人划分的净值
对于数据透视表之外的汇总表:
=SUMIFS(tblInsider[signed_value],tblInsider[issuer_name],A2)
其中 A2 包含发行人名称。
仅限买入的平均购买价格
=SUMIFS(tblInsider[transaction_value],tblInsider[issuer_name],A2,tblInsider[transaction_code],"P")/SUMIFS(tblInsider[shares],tblInsider[issuer_name],A2,tblInsider[transaction_code],"P")
如有需要,请用 IFERROR 包裹:
=IFERROR(SUMIFS(tblInsider[transaction_value],tblInsider[issuer_name],A2,tblInsider[transaction_code],"P")/SUMIFS(tblInsider[shares],tblInsider[issuer_name],A2,tblInsider[transaction_code],"P"),NA())
内部人净值环比变化
如果您有一个月度汇总表,其中发行人作为行,月份作为列,那么简单的减法即可。如果您更喜欢公式驱动的汇总:
=SUMIFS(tblInsider[signed_value],tblInsider[issuer_name],A2,tblInsider[year_month],B$1)-SUMIFS(tblInsider[signed_value],tblInsider[issuer_name],A2,tblInsider[year_month],TEXT(EOMONTH(DATEVALUE(B$1&"-01"),-1),"yyyy-mm"))
这种公式让人怀念 SQL。不过,它确实能完成任务。
监控内部人活动的实用工作流程
工作簿的重点不在于欣赏其架构,而在于决定哪些值得进一步关注。