Excel-转置未排序的项目

Excel-转置未排序的项目,excel,excel-formula,transpose,vba,Excel,Excel Formula,Transpose,Vba,假设我有一张这样的桌子 TID人员类型名称 1安迪F橙 2米牛肉 3安迪V胡萝卜 4安迪V菠菜 5鲍比·M·汉姆 6鲍比F苹果 7 Bobby V Carrot 我想转置它,以便它将根据类型进行排序,我希望它看起来像这样 人F M V 安迪橙牛肉胡萝卜 鲍比苹果火腿胡萝卜 我怎样才能做到这一点?哦,我还要指出一些东西,以防你们错过了: 这些类型没有特定的顺序,如果你注意到安迪的,顺序是fmv,但鲍比的是mfv 类型的多个实例可能会出现,就像Andy的例子一样,请注意双V。但即使如此,我希望它的唯

假设我有一张这样的桌子

TID人员类型名称
1安迪F橙
2米牛肉
3安迪V胡萝卜
4安迪V菠菜
5鲍比·M·汉姆
6鲍比F苹果
7 Bobby V Carrot

我想转置它,以便它将根据类型进行排序,我希望它看起来像这样

人F M V
安迪橙牛肉胡萝卜
鲍比苹果火腿胡萝卜

我怎样才能做到这一点?哦,我还要指出一些东西,以防你们错过了:

  • 这些类型没有特定的顺序,如果你注意到安迪的,顺序是fmv,但鲍比的是mfv
  • 类型的多个实例可能会出现,就像Andy的例子一样,请注意双V。但即使如此,我希望它的唯一值是第一个,这就是为什么在转置表中,V是胡萝卜,因为胡萝卜首先出现(菠菜被忽略)
  • 我不知道我是否要求太多,但即使只是解决方案的要点也会对我很有帮助。我的问题的重点是问我如何在注意第一点的同时转换这些未排序的项目。第二点也很重要,但如果你们不想回答,我可以等一等或者稍后再问


    感谢阅读,请与我分享您的知识。

    最简单/最快速的方法是在
    TID
    列之前创建一个新列,其中包含此公式

    =[Person]&“quo”和[Type]

    例如,假设您的数据从B列开始,请参见屏幕截图(TID),那么第一个公式是:

    =C2&“u”&D2
    ,并将导致创建
    Andy\u F
    。把你所有的名字都抄下来

    你应该有这样的东西:

    NEW    TID  Person  Type    Name
    Andy_F  1   Andy    F   Orange
    Andy_M  2   Andy    M   Beef
    Andy_V  3   Andy    V   Carrot
    Andy_V  4   Andy    V   Spinach
    Bobby_M 5   Bobby   M   Ham
    Bobby_F 6   Bobby   F   Apple
    Bobby_V 7   Bobby   V   Carrot
    
    接下来,设置如下表(如有必要,使用“复制唯一项”),在垂直方向上具有唯一名称,并沿水平方向键入:

           F       M    V
    Andy  [form]        
    Bobby   
    
    其中
    [form]
    是一个
    vlookup
    公式,如下面的屏幕截图所示:

    将公式复制到新表中的所有单元格后,将为您生成正确的表:

    Vlookup
    将获取第一个与其搜索标准匹配的项目,因此多个匹配项将被忽略

    表中Andy F的公式为
    VLOOKUP($G2&“”&H$1,$A$2:$E$8,5,0)
    ,数据如屏幕截图所示


    更好的方法可能是使用VBA,但这应该可以解决问题。

    是否总是只有三种不同的“类型”,或者可能有更多?无论哪种方式,我都会创建一个类对象并读取Person/Type/Name组合;为其指定一个唯一的名称(如Person | Type),将其添加到一个集合中,并使用唯一的名称作为键,这将导致一个集合由唯一的PersonTypes组成,并且只保留第一个PersonTypes。然后将结果放入一个足够宽的数组中,以包含所有类型;将其写入工作表,并水平排序。阅读皮尔森的关于类的介绍的页面,以开始例程的一部分。如果有任何帮助,请考虑标记作为答案,所以有相同问题的其他人可以找到解决方案。谢谢