Excel 2021中D&D角色表Tot_Class列自动计算公式求助
D&D角色表Tot_Class列自动计算公式方案(Excel 2021)
针对Excel 2021中D&D角色表的需求,以下是借助LET函数实现Tot_Class列自动计算的完整方案,可同时统计各职业累计等级并拼接最后出现的子类:
完整公式
=LET( CurrentLevel, [@Level], FilteredRows, FILTER(Table1[[Class]:[Subclass]], (Table1[Level] <= CurrentLevel) * (Table1[Level] > 0)), UniqueClasses, UNIQUE(INDEX(FilteredRows,,1)), ClassLevels, BYROW(UniqueClasses, LAMBDA(c, SUM(--(INDEX(FilteredRows,,1)=c)))), LastSubclasses, BYROW(UniqueClasses, LAMBDA(c, INDEX(FilteredRows, MAXIFS(Table1[Level], Table1[Level]<=CurrentLevel, Table1[Class]=c), 2))), ClassStrings, BYROW(HSTACK(UniqueClasses, ClassLevels, LastSubclasses), LAMBDA(x, IF(INDEX(x,3)<>"", INDEX(x,1)&INDEX(x,2)&" ("&INDEX(x,3)&")", INDEX(x,1)&INDEX(x,2)))), TEXTJOIN(", ", TRUE, ClassStrings) )
公式说明
- 变量定义
CurrentLevel:提取当前行的等级值,作为统计的截止节点FilteredRows:筛选出所有等级≤当前等级且等级>0的职业、子类数据行UniqueClasses:从筛选结果中提取唯一的职业名称列表ClassLevels:对每个唯一职业,统计其累计等级数LastSubclasses:对每个唯一职业,找到其最后一次出现(对应最高等级行)的子类ClassStrings:将职业名、累计等级、子类按格式拼接(子类为空时仅显示职业+等级)TEXTJOIN:将所有职业的格式化字符串用逗号分隔,拼接成最终结果
使用注意事项
- 把公式中的
Table1替换为你的实际表名,[Class]、[Subclass]、[Level]替换为对应列的名称 - 若子类列存在空白值,公式会自动跳过括号部分,仅显示“职业+等级”格式
- 确保Excel 2021已启用动态数组功能(默认开启)
示例效果
假设角色表数据如下:
| Level | Class | Subclass |
|---|---|---|
| 1 | 战士 | 狂怒野蛮人 |
| 2 | 战士 | 狂怒野蛮人 |
| 3 | 法师 | 塑能学派 |
第三行的Tot_Class列将生成:战士2(狂怒野蛮人),法师1(塑能学派)
内容的提问来源于stack exchange,提问作者Lyriander NB
相关产品推荐
相关产品推荐

