我有一个Excel表格,其数据结构类似于:
declare @table table (script_id int identity(1,1), script varchar(4000))
insert into @table
values
('Sending information to a@gmail.com, please also send to a@gmail.com
and b@gmail.com'),
('Sending information to a@gmail.com, b@gmail.com.')
select distinct
--case statement removed periods from end of email for when it's at the end of a sentence
case when right(x.Item,1) != 'm' then left(x.Item,len(x.Item) - 1) else x.Item end
from @table t
cross apply dbo.DelimitedSplit8K(script,' ') x
where x.Item like '%@gmail.com%'
是否有一种简单的方法来创建一个或多个新表,其中一个列表示类别,并且该列中的值是另一列中的值?例如,如果我选择“角色”,则上述列表的输出表是:
Name Team Role Level Laptop Monitor
Cheryle Parish Archers Programmer Level2 Dell 2
Shandi Kime Archers Programmer Level2 Dell 1
Edwardo Cookson Archers Programmer Level1 HP 3
Voncile Deak Archers Programmer Level2 HP 3
Boyd Cueva Climbers Tester Level2 HP 2
Caryn Kear Climbers Programmer Level2 Apple 1
Kirsten Hirt Climbers Tester Level2 Apple 3
Ayana Mayfield Climbers Programmer Level2 Dell 2
Venetta Embree Archers Programmer Level2 Dell 3
Herb Obryan Archers Programmer Level2 Dell 2
Isobel Steinmetz Explorers Tester Level2 Apple 3
Valeri Eisen Explorers Programmer Level1 Dell 1
Anibal Plumlee Explorers Programmer Level1 Dell 3
Floretta Tunney Explorers Tester Level1 Apple 1
Lilliana Klutts Explorers Programmer Level1 HP 2
Gaston Custodio Explorers Programmer Level1 HP 2
Jared Phaneuf Explorers Manager Level1 Dell 3
Melvin Monsivais Climbers Manager Level2 HP 2
源表中的其他条目在新表中被丢弃。理想情况下,如果有任何重复项,则忽略重复项,并且新表仅具有唯一值。 VBA解决方案会起作用,尝试避免使用外部程序。
我们可以选择任何列作为新表中的分类类别。例如,我们可以生成一个拥有特定笔记本电脑品牌的人的列表。
我能想到的最接近的方法是使用数据透视表来生成仍需要复制和粘贴类型编辑的内容。
Programmer Manager Tester
Cheryle Parish Jared Phaneuf Boyd Cueva
Shandi Kime Melvin Monsivais Floretta Tunney
Edwardo Cookson Isobel Steinmetz
Voncile Deak Kirsten Hirt
Caryn Kear
Ayana Mayfield
Venetta Embree
Herb Obryan
Valeri Eisen
Anibal Plumlee
Lilliana Klutts
Gaston Custodio
我发现了与Excel Categorized table by column类似的问题,但是答案不能解决上述问题。
答案 0 :(得分:0)
我知道这并不是您想要的,但这可能是一个折衷方案,可以让您与众不同,而不必强迫您编写VBA来实现这一目标,这可能是唯一真正获得所需内容的真正方法。
您可以在此处创建数据透视表,并将Role
放入列中,将Name
放入行中,再将Name
放入Values
中,您将获得一个{ {1}}(如果名称属于特定的1
)。您可以使用枢轴表将Role
或Role
或其他任何内容轻松地换出Level
。
您也许可以构建一些数据来从该数据透视表中获取确切需要的信息,但是同样……这会花费更多的精力:
答案 1 :(得分:0)
我认为可以使用公式来完成。可能工作量太大,甚至难以维护,但这两个链接应该是一个好的开始(对不起,您没有时间提供完整的答案):