将单列文本分为多列

我正在尝试创build一个macros,它将根据项目types将一列中的数据分成多个列。 我试图分类的数据是合同中有关项目的元数据的合同清单。

原始数据如下所示:

合同号合同名称项目types项目描述
 111111巧克力用品POTS 5“
 111111巧克力用品POTS 10“
 111111巧克力用品POTS 15“
 111111巧克力用品PANS 5“
 111111巧克力用品PANS 10“
 111111巧克力用品PANS 15“
 111111巧克力用品刀削皮刀
 111111巧克力用品银器沙拉叉子
 111111巧克力用品银器餐叉
 111111巧克力用品银器甜品叉
 111111巧克力用品银器甜品勺子
 111111巧克力用品银器汤匙
 22222汤和沙拉订购POTS 10“
 22222汤和沙拉订购POTS 15“
 22222汤和沙拉订购PANS 15“
 22222汤和沙拉命令刀黄油刀
 22222汤和沙拉命令刀面包刀
 22222汤和沙拉点菜刀削皮刀
 22222汤和沙拉订购SILVERWARE汤匙

最后的数据需要像这样(编辑包含图像): 报告的最终格式

合同合同名称POTS PANS刀银器
 111111巧克力用品5“5”削皮刀沙拉叉
                                     10“10”晚餐叉子                         
                                     15“15”甜点叉子
                                                                    甜点勺子
                                                                    汤匙
 22222汤和沙拉订购10“15”黄油刀汤勺
                                     15“面包刀 
                                                    削皮刀    

#我到目前为止所尝试的#
目前我正在使用的粗略解决scheme是:
– 运行查询
– 将数据粘贴到Excel中
– 创build一个枢纽
– 根据需要使用一系列计数,偏移和间接公式来重新组织数据
– 由于上述过程会在每个合同部分之间留下空行,我将数据复制粘贴到新的工作表中,放置一个自动filter并删除空行
…和瞧,这是最后的报告。

#可能的VBA解决scheme#
我发现这个教程似乎正是我想要的,除了我需要macros开始一个新的部分,当合同没有的问题。 变化。 我不知道如何获得下面的VBA代码也检查合同号。

我很乐意提供任何帮助。 提前致谢!

#来自奥斯卡的get-digital-help [dot] com的教程代码。
不是我的代码,我完全相信奥斯卡的教程让我朝着正确的方向前进。

Sub Categorizedatatocolumns() Dim rng As Range Dim dest As Range Dim vrb As Boolean Dim i As Integer Set rng = Sheets("Sheet1").Range("A4") vrb = False Do While rng <> "" Set dest = Sheets("Sheet1").Range("A20") Do While dest <> "" If rng.Value = dest.Value Then vrb = True End If Set dest = dest.Offset(0, 1) Loop If vrb = False Then dest.Value = rng.Value dest.Font.bold = True End If vrb = False Set rng = rng.Offset(1, 0) Loop Set rng = Sheets("Sheet1").Range("A4") Do While rng <> "" Set dest = Sheets("Sheet1").Range("A20") Do While dest <> "" If rng.Value = dest.Value Then i = 0 Do While dest <> "" Set dest = dest.Offset(1, 0) i = i + 1 Loop Set rng = rng.Offset(0, 1) dest.Value = rng.Value Set rng = rng.Offset(0, -1) Set dest = dest.Offset(-i, 0) End If Set dest = dest.Offset(0, 1) Loop Set rng = rng.Offset(1, 0) Loop End Sub 

你可以考虑使用数据透视表,它会给出类似的输出。

在这里输入图像说明

closures小计,并以表格forms显示所有字段的数据。

在这里输入图像说明

在这里输入图像说明