You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中跨工作表计算各股票的XIRR?

Google Sheets投资组合表中计算单只股票XIRR的实现方法

前提假设(匹配你的表结构)

先明确两个表的关键列(如果你的列位置不同,对应调整公式中的列名即可):

  • Transactions(交易记录表):
    • A列:股票代码/名称(如HDFCBK)
    • B列:交易日期
    • D列:交易金额(买入填负数,卖出填正数,分红填正数)
  • Portfolio(投资组合表):
    • A列:股票代码/名称
    • D列:总市值(已计算为「持仓量×当前市价」)
    • E列:用于显示XIRR的目标列

核心公式

在Portfolio表的E2单元格(对应第一只股票)输入以下公式,下拉复制到所有行即可:

=IFERROR(
  XIRR(
    {FILTER(Transactions!D:D, Transactions!A:A=A2); D2},
    {FILTER(Transactions!B:B, Transactions!A:A=A2); TODAY()}
  ),
  "无交易"
)

公式解释

  1. FILTER函数:从Transactions表中筛选出当前股票(A2)的所有交易金额和对应日期,生成该股票的现金流数组和日期数组。
  2. 数组合并:{...; D2} 和 {...; TODAY()} 把当前股票的总市值作为最后一笔正现金流,今日日期作为这笔现金流的发生日(模拟当前卖出变现的情况)。
  3. XIRR函数:基于合并后的现金流和日期数组计算内部收益率,自动考虑不同时间点的资金成本。
  4. IFERROR包装:处理无交易记录的股票,返回友好提示。

关键注意事项

  • 金额符号规范:买入必须填负数(资金流出),卖出/分红填正数(资金流入),否则XIRR计算结果会错误。
  • 日期格式:确保两个表的日期列都是Google Sheets标准日期格式,不要用文本格式。
  • 初始猜测值(可选):如果XIRR返回#NUM!错误,可以在函数最后加一个初始猜测值(比如0.1代表10%),例如:
    =IFERROR(XIRR({FILTER(...); D2}, {FILTER(...); TODAY()}, 0.1), "无交易")
    

内容的提问来源于stack exchange,提问作者usr_lal123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:20:11