如何用电子表格通过单个公式生成成对比较矩阵
生成成对比较矩阵的单个公式方案
基于以下候选人排名数据:
| Candidate | Ranking |
|---|---|
| A | 1 |
| B | 5 |
| C | 3 |
| D | 2 |
| E | 4 |
需生成5×5的成对比较矩阵,规则为行候选人排名优于列候选人时(即行的排名数值更小)显示1,否则显示0,以下是可一次性生成整个矩阵的公式方案:
Google Sheets 方案
假设候选人名单在A2:A6,排名数据在B2:B6,选中矩阵起始单元格(如D2),输入公式:
=ARRAYFORMULA(IF(B2:B6 < TRANSPOSE(B2:B6), 1, 0))
公式说明:
TRANSPOSE(B2:B6):将纵向的排名列转为横向数组,实现行与列的两两比较B2:B6 < TRANSPOSE(B2:B6):生成布尔值矩阵,行排名更优时返回TRUE,否则为FALSEARRAYFORMULA:让公式批量作用于整个数组范围,无需手动下拉填充IF(...,1,0):将布尔值转换为要求的1/0数值矩阵
如果需要同时生成带候选人姓名的行列标题,用整合公式:
=ARRAYFORMULA({{"",A2:A6}; {A2:A6, IF(B2:B6 < TRANSPOSE(B2:B6), 1, 0)}})
Excel 方案(支持动态数组的版本,如365/2021)
同样假设数据在A2:A6和B2:B6,输入公式后会自动溢出生成矩阵:
=IF(B2:B6 < TRANSPOSE(B2:B6), 1, 0)
旧版Excel需按Ctrl+Shift+Enter作为数组公式输入。
内容的提问来源于stack exchange,提问作者James Cleveland-Tran
相关产品推荐
相关产品推荐

