Excel中实现将二进制值转换为对应分类文本至Class列
在Excel中提取值为1的对应列标题到Class列
需求说明
你需要将每行中值为"1"的列的标题(犯罪类型)填充到同一行的Class列,期望效果如下:
| Class | Arson | Burglary | CriminalDamagetoProperty | LockVehicle | Robbery | Theft |
|---|---|---|---|---|---|---|
| Burglary | 0 | 1 | 0 | 0 | 0 | 0 |
| CriminalDamagetoProperty | 0 | 0 | 1 | 0 | 0 | 0 |
| Arson | 1 | 0 | 0 | 0 | 0 | 0 |
| LockVehicle | 0 | 0 | 0 | 1 | 0 | 0 |
| Robbery | 0 | 0 | 0 | 0 | 1 | 0 |
| Theft | 0 | 0 | 0 | 0 | 0 | 1 |
下面是几种实用的实现方法:
方法1:INDEX+MATCH公式(兼容所有Excel版本)
假设你的数据结构和示例一致:Class列是A列,犯罪类型标题在第1行(B1:G1),数据从第2行开始。
在A2单元格输入以下公式,然后下拉填充到所有行:
=INDEX($B$1:$G$1,MATCH(1,$B2:$G2,0))
MATCH(1,$B2:$G2,0):定位当前行中值为1的单元格所在列的位置INDEX($B$1:$G$1, ...):根据定位的位置,提取对应列的标题文本
方法2:XLOOKUP公式(Excel 365/2021及以上版本)
如果你的Excel是新版本,用XLOOKUP更简洁,A2单元格输入:
=XLOOKUP(1,$B2:$G2,$B$1:$G$1)
直接匹配值为1的单元格对应的标题,无需嵌套函数,下拉即可完成填充。
方法3:快速填充(无公式,操作简单)
适合数据量不大的场景:
- 手动在A2单元格输入对应行的标题(比如示例里的
Burglary) - 选中A2到最后一行的
Class列单元格 - 按下快捷键
Ctrl+E,Excel会自动识别规律并完成所有填充
方法4:Power Query(适合批量/重复处理)
如果需要经常处理这类数据,用Power Query更高效:
- 选中整个数据区域,点击「数据」选项卡 → 「从表格/区域」(勾选「我的表格有标题」)
- 在Power Query编辑器中,选中所有犯罪类型列(B到G列),点击「转换」选项卡 → 「逆透视列」→ 选择「逆透视其他列」
- 此时会生成「属性」(原列标题)和「值」两列,筛选「值」列等于1的行
- 将「属性」列重命名为「Class」,删除多余的「值」列
- 点击「关闭并上载」,结果将生成新的表格,完全符合你的需求
内容的提问来源于stack exchange,提问作者dcarranco
相关产品推荐
相关产品推荐

