我有一个excel,其中包含考试数据(Theory,Sessional,Practical等)。我必须将相同的基于QPCODE的数据放在一行中 我的数据是 -
+-------+--------+--------------------+--------------+---------------------------+--------------------+--------------------------+---------------------+-----------+-----------+
| id | qpcode | subject_paper_code | subject_code | subject_name | subject_paper_name | subject_paper_short_code | subject_paper_group | min_marks | max_marks |
+-------+--------+--------------------+--------------+---------------------------+--------------------+--------------------------+---------------------+-----------+-----------+
| 37790 | 10032 | 0 | A47 | GEOGRAPHY | THEORY | GEOG1 | A | 21 | 60 |
| 37791 | | 1 | A47 | GEOGRAPHY | I.A.(THEORY) | GE1IA | A | 0 | 10 |
| 37792 | | 2 | A47 | GEOGRAPHY | PRACTICAL | GE1PR | B | 9 | 20 |
| 37793 | | 3 | A47 | GEOGRAPHY | RECORD | GE1RC | B | 0 | 10 |
| 37794 | 10033 | 0 | A50 | HINDI (OPT) | THEORY | HINO1 | A | 40 | 80 |
| 37795 | | 1 | A50 | HINDI (OPT) | I.A.(THEORY) | HI1IA | A | 0 | 20 |
| 37796 | 10034 | 0 | A51 | HISTORY(PRIOR TO 2008-09) | THEORY | HIST1 | A | 40 | 80 |
+-------+--------+--------------------+--------------+---------------------------+--------------------+--------------------------+---------------------+-----------+-----------+
我必须将相同的qpcode数据放在单行中,以便我可以在所有qpcodes的单行中获得相同的qpcode数据。
+-------+--------+--------------------+--------------+--------------+--------------------+--------------------------+---------------------+-----------+-----------+---------------------------+------------+------------+---------------------------+------------+------------+---------------------------+------------+------------+
| id | qpcode | subject_paper_code | subject_code | subject_name | subject_paper_name | subject_paper_short_code | subject_paper_group | min_marks | max_marks | subject_paper_short_code2 | min_marks2 | max_marks2 | subject_paper_short_code3 | min_marks3 | max_marks3 | subject_paper_short_code4 | min_marks4 | max_marks4 |
+-------+--------+--------------------+--------------+--------------+--------------------+--------------------------+---------------------+-----------+-----------+---------------------------+------------+------------+---------------------------+------------+------------+---------------------------+------------+------------+
| 37790 | 10032 | 0 | A47 | GEOGRAPHY | THEORY | GEOG1 | A | 21 | 60 | GE1IA | 0 | 10 | GE1PR | 9 | 20 | GE1RC | 0 | 10 |
+-------+--------+--------------------+--------------+--------------+--------------------+--------------------------+---------------------+-----------+-----------+---------------------------+------------+------------+---------------------------+------------+------------+---------------------------+------------+------------+
答案 0 :(得分:0)
使用VBA执行此操作更简单。但我想知道是否可以使用数据透视表完成。所以这是我遵循的四个步骤。
第1步:清理数据
将您的数据复制到新工作表。
有一些不必要的列。删除它们:
它们在摘要中不起任何作用,并且因为它们与特定记录有关而相当不合适。但是,如果您确实需要这些,那么您可以使用简单的VLOOKUP
来获取这些内容。
删除这些列后,您将剩下四个。假设这些包含在A:D
列中。
qpcode
列,以便问题纸代码是连续的,并且它们之间没有任何空白单元格。为此,您可以在A列的左侧插入一列(包含qpcode
),将此公式粘贴到A2
并向下拖动:
=IF(ISBLANK(B2),A1,B2)
这将使每个记录重复qpcodes。
qpcode
列(B列),其中只包含每组记录的一个代码。您的表格应如下所示:
╔════════╦══════════════════════════╦═══════════╦═══════════╗
║ qpcode ║ subject_paper_short_code ║ min_marks ║ max_marks ║
╠════════╬══════════════════════════╬═══════════╬═══════════╣
║ 10032 ║ GEOG1 ║ 21 ║ 60 ║
║ 10032 ║ GE1IA ║ 0 ║ 10 ║
║ 10032 ║ GE1PR ║ 9 ║ 20 ║
║ 10032 ║ GE1RC ║ 0 ║ 10 ║
║ 10033 ║ HINO1 ║ 40 ║ 80 ║
║ 10033 ║ HI1IA ║ 0 ║ 20 ║
║ 10034 ║ HIST1 ║ 40 ║ 80 ║
╚════════╩══════════════════════════╩═══════════╩═══════════╝
第2步:创建数据透视表
创建数据透视表
将qpcode
拖到行区域
将这些字段按此顺序逐个拖动到“列”区域
在您在上一步的“列”区域中放置的所有三个字段中使用以下设置
None
标签Subtotals & Filters
Layout & Print
标签,然后查看Repeat item labels
选项 注意:仅对“列”区域中的前两个项目应用上一步中的设置。将它们应用到第三个(max_marks
)没有任何区别。
将这些拖动到“值”区域(这些与您在上一步中的“列”区域中放置的相同):
在“Summarize value field field”设置中选择“Count”选项。这只需要在最后使清洁部件更容易。
第3步:操纵结果
复制数据透视表并在新工作表中,使用“选择性粘贴”选项中的“粘贴为值”选项将其粘贴
从数据透视表的副本中复制“列”和“行”标签,然后将其粘贴到下面。这是一个更清晰的屏幕截图:
我对列标题进行了加粗。
B10
中,并将其复制到整个范围(在本例中为B10:V12
):=IF(NOT(ISBLANK(B5)),INDIRECT(ADDRESS(MOD(COLUMN()-1,3)+3*(MOD(COLUMN()-1,3)=0),COLUMN())))
保留此范围以供下一步说明使用。
再次复制此范围,并将其粘贴为值(位于相同位置)。
在仍然选择范围的情况下,按 Ctrl + H (替换对话框),并用空格替换FALSE
。
按 F5 ,然后选择Goto Special
。然后,选择Blank
单元格选项,然后按 Enter 。现在,只会选择范围内的空白单元格。
按 Ctrl + - ,然后在弹出的对话框中选择Shift cells left
。
第4步:清理
请注意列标题前面的'Count of'。选择行并将Count of
(包括尾随空格)替换为空白。
将Row Label
替换为qpcode
。
最后还会留下一些额外的列。也可以删除它们。
就是这样。这应该可以为您提供所需的数据。
以下是您提供的数据的输出:
╔════════╦══════════════════════════╦═══════════╦═══════════╦══════════════════════════╦═══════════╦═══════════╦══════════════════════════╦═══════════╦═══════════╦══════════════════════════╦═══════════╦═══════════╗
║ qpcode ║ subject_paper_short_code ║ min_marks ║ max_marks ║ subject_paper_short_code ║ min_marks ║ max_marks ║ subject_paper_short_code ║ min_marks ║ max_marks ║ subject_paper_short_code ║ min_marks ║ max_marks ║
╠════════╬══════════════════════════╬═══════════╬═══════════╬══════════════════════════╬═══════════╬═══════════╬══════════════════════════╬═══════════╬═══════════╬══════════════════════════╬═══════════╬═══════════╣
║ 10032 ║ GE1IA ║ 0 ║ 10 ║ GE1PR ║ 9 ║ 20 ║ GE1RC ║ 0 ║ 10 ║ GEOG1 ║ 21 ║ 60 ║
║ 10033 ║ HI1IA ║ 0 ║ 20 ║ HINO1 ║ 40 ║ 80 ║ ║ ║ ║ ║ ║ ║
║ 10034 ║ HIST1 ║ 40 ║ 80 ║ ║ ║ ║ ║ ║ ║ ║ ║ ║
╚════════╩══════════════════════════╩═══════════╩═══════════╩══════════════════════════╩═══════════╩═══════════╩══════════════════════════╩═══════════╩═══════════╩══════════════════════════╩═══════════╩═══════════╝