我有一个如下所示的CSV文件:
name, a
v1, 1
name, b
v1, 1
v2, 5
name, c
v1, 4
v2, 6
name, d
v2, 8
v3, asdf
使用Excel或LibreOffice,我该如何将其转换为:
name, v1, v2, v3
a, 1, ,
b, 1, 5,
c, 4, 6,
d, , 8, asdf
我一直在寻找关键字transpose,但它似乎不是正确的搜索关键字 - 所有指南都只显示如何进行完整的转置,这不是我想要的。
我也发现了这个问题,但它假设数据非常干净,必须手动调整列数:Specific Transpose in Excel
我不知道提前列的数量,有些单元格可能会丢失。
答案 0 :(得分:0)
我的基于公式的方法,具有以下数据布局:
列A
和B
是从CSV文件导入的。
帮助器C
列中的公式:
=IF(A2="name",B2,C1)
F1
和F2
中的公式计算A
和C
列中的唯一条目,它们不是创建输出表所必需的(两个数组公式都用{{1}确认}} + Ctrl
+ Shift
):
Enter
行标题 - 来自=SUM(1/COUNTIF(C2:C12,C2:C12))
=SUM(1/COUNTIF(A2:A12,A2:A12))
列(C
的唯一值,已通过E6
+ Ctrl
+ Shift
确认,并向下拖动)
Enter
Colummn标头 - 来自=IFERROR(INDEX($C$2:$C$12, MATCH(0, COUNTIF($E$5:E5, $C$2:$C$12), 0)),"")
列(A
的唯一值,已通过F5
+ Ctrl
+ Shift
确认,并向右拖动
Enter
两列=IFERROR(INDEX($A$2:$A$12, MATCH(0, COUNTIF($E$5:E5, $A$2:$A$12), 0)),"")
/ INDEX
组合填充输出表格MATCH
,已通过F6
+ Ctrl
+ Shift
确认,并已拖动正确和向下):
Enter
答案 1 :(得分:0)
您需要执行两项操作才能实现目标:
将不同的数据类型移动到单独的列。您将有三个包含公式的新列:
=IF(A2="name",B2,C1)
=IF(A2="name","",A2)
=IF(A2="name","",B2)
在这里,您无法使用标准数据透视表,因为值也可以是文本,有几个教程可以创建它:
答案 2 :(得分:0)
我完全接受了你的要求。由于您希望使用Excel将CSV文件“转换”为从第一个示例看起来像第二个示例,我使用Excel VBA:
Fields Management for window 1:Def, whose current sort field is forest view
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end!
* PID = Process Id
* USER = Effective User Name
* PR = Priority
* NI = Nice Value
* VIRT = Virtual Image (KiB)
* RES = Resident Size (KiB)
* SHR = Shared Memory (KiB)
* S = Process Status
* %CPU = CPU Usage
* %MEM = Memory Usage (RES)
* TIME+ = CPU Time, hundredths
* COMMAND = Command Name/Line
PPID = Parent Process pid
UID = Effective User Id
RUID = Real User Id
RUSER = Real User Name
SUID = Saved User Id
SUSER = Saved User Name
GID = Group Id
GROUP = Group Name
PGRP = Process Group Id
TTY = Controlling Tty
TPGID = Tty Process Grp Id
SID = Session Id
nTH = Number of Threads
* P = Last Used Cpu (SMP)
TIME = CPU Time
SWAP = Swapped Size (KiB)
CODE = Code Size (KiB)
DATA = Data+Stack (KiB)
nMaj = Major Page Faults
nMin = Minor Page Faults
nDRT = Dirty Pages Count
WCHAN = Sleeping in Function
Flags = Task Flags <sched.h>
CGROUPS = Control Groups
SUPGIDS = Supp Groups IDs
SUPGRPS = Supp Groups Names
TGID = Thread Group Id
ENVIRON = Environment vars
vMj = Major Faults delta
vMn = Minor Faults delta
USED = Res+Swap Size (KiB)
nsIPC = IPC namespace Inode
nsMNT = MNT namespace Inode
nsNET = NET namespace Inode
nsPID = PID namespace Inode
nsUSER = USER namespace Inode
nsUTS = UTS namespace Inode
name
和Name
如果您在记事本中打开CSV文件,则可以看到结果。
确保设置对Windows Scripting Runtime的引用以访问FileSystemObject。
V's