我有重复的 ID 值,但我需要保留每行内的数据,而不仅仅是删除它。
以下是我目前拥有的:
课程成绩 1 地理 90 2 数学 80 3 地理 75 4 数学 90 4 科学 90 4 地理 50 5 科学 85
这就是我要的:
ID geo math sci gradegeo grademath gradesci 1 1 0 0 90 2 0 1 0 80 3 1 0 0 75 4 0 1 1 50 90 90 5 0 0 1 85
希望有人能帮忙:)
附言:我认为这应该在具有多个表和一个主键的数据库中完成,但是遗憾的是,我无法访问它。
答案1
使用两个数据透视表(第一个:选择范围,插入,表格,数据透视表,数据透视表,确定,单击显示的框,将 ID 拖到行标签中,将课程拖到列标签中,将成绩拖到 Σ 值中。)
将该数据透视表复制到右侧,确保左侧数据透视表的 Σ 值为 Count of,右侧数据透视表的 Σ 值为 Sum of。隐藏右侧表格的顶行和 Row Labels 列。根据需要重命名列标签。
为确保左侧表格中显示 0 而非空白,请右键单击表格,选择“数据透视表选项”、“布局和格式”,选中“显示空单元格”并插入 0。如有必要,可以通过左键单击 Σ 值内容、“值字段设置”(以及将“总计”更改为“计数”等的位置)和“数字格式”来调整成绩数字的格式。(如果直接在数据透视表中调整格式,则下次刷新时将撤消)。
用 ID 覆盖行标签,希望您能得到想要的结果。
请注意,如果您将数据添加到源范围,则数据透视表将不会改变,直到您单击其中任一表并选择“刷新”。
答案2
使用数据透视表。这不是“转置”,而是“聚合” - 术语差异应该有助于您进行谷歌搜索:)
- 输入数据
- 选择(突出显示)所有相关数据,然后在“新工作表”中使用插入 -> 数据透视表创建数据透视表。
根据您的需要自定义数据透视表。在非常特殊的情况下,将课程字段拖放到列标签,将 ID 字段拖放到行标签,并将成绩值拖到值区域两次:一次,保持原样以获得成绩的“总和”(除非单个学生在同一学期两次选修同一门课程,否则这只会求和一次值),对于另一个“成绩总和”,左键单击下拉箭头并查看“值字段设置”。将其从“总和”更改为“计数”。
选择整个数据透视表,按 Ctrl+C 复制到剪贴板,转到新工作表,然后在粘贴选项(功能区主页选项卡上剪贴板图标下的下拉列表)中执行“粘贴带有源格式的值”。
重新排列列并调整格式,直到得到您想要的结果。以下是我为使其看起来像您想要的输出所做的操作;生成数据透视表后,我花了大约 30 秒的时间: