要根据你的具体的数据来,看看是否有简便办法。万能的方法肯定是VBA编程,扫描原表,不断复制数据,主要逻辑如下
set d=createobject("scripting.dictionary")
arr=range("a1").currentregion
n=ubound(arr)+2
for i=1 to ubound(arr)
if not d.exists(arr(i,1)) then
d.add arr(i,1), n
cells(n,1)=arr(i,1)
n=n+1
end if
j=d(arr(i,1))
x=cells(j,columns.count).end(xltoleft).column+1
cells(i,2).resize(1, ubound(arr,2)-1).copy cells(j,x)
next i
追问VBA 0基础,不太好理解使用,请问能用excel公式做到吗
追答公式写着太复杂了,几乎可以说做不到。
公式实现分三步,第一步把所有数据合并为一列,就是原始数据只有两列:关键字和数据,使用&运算即可,可以考虑使用一个分隔符(根据具体数据情况选择空格等)
第二步是把两列的数据转换为行,提取唯一关键字为新表A列,BCD....等列写公式提取第1~N次重复的数据
先增加辅助列:
再写公式提取:
第三步再把数据按空格分开为多列:
辅助行1~2可以使用MOD和ROUNDDOWN来计算,含义为本列数据是第几组、第几项