在Excel中将多行转换为列

我有一张包含客户及其家属的工作表。 它被列为

SSN姓氏名字关系
000-00-0000史密斯约翰客户
000-00-0000史密斯弗雷迪儿子
000-00-0000史密斯贝丝女儿
111-11-1111 Johnson Alan客户
111-11-1111约翰逊·卡拉配偶

我需要列出的只是客户作为行,以及旁边列出的依赖(下一列),如下所示:

SSN姓氏名字Dep1 FN Dep1 Rel Dep2 FN Dep2 Rel
000-00-0000史密斯约翰弗雷迪儿子贝丝女儿
111-11-1111约翰逊·艾伦·卡拉配偶

SSN是决定性因素,因为有时候姓氏会有所不同。 我看到一些VBA问题有类似的答案,但我似乎无法find具体的修改。

编辑:

我已经试过的代码是:

Sub tgr() Dim wsInput As Worksheet Dim wsOutput As Worksheet Dim ACell As Range Dim arrResults() As Variant Dim ResultIndex As Long Dim sCurrent As String Dim sLine As String Set wsInput = ActiveWorkbook.Sheets("Input") Set wsOutput = ActiveWorkbook.Sheets("Output") With wsInput.Range("A1").CurrentRegion .Sort .Resize(, 1), xlAscending, .Offset(, 1).Resize(, 1), , xlAscending, Header:=xlGuess ReDim arrResults(1 To .Cells.Count, 1 To 1) For Each ACell In .Resize(, 1).Cells If ACell.Value & "|" & ACell.Offset(, 1).Value <> sCurrent Then sCurrent = ACell.Value & "|" & ACell.Offset(, 1).Value ResultIndex = ResultIndex + 1 arrResults(ResultIndex, 1) = sCurrent End If arrResults(ResultIndex, 1) = arrResults(ResultIndex, 1) & "|" & ACell.Offset(, 2).Value Next ACell End With With wsOutput.Range("A1").Resize(ResultIndex) .Parent.UsedRange.Clear .Value = arrResults .TextToColumns .Cells, xlDelimited, Other:=True, OtherChar:="|" End With End Sub 

我在另外一个问题上发现了这个问题,但是列出了我需要的东西,除了客户端旁边的家属姓氏之外。 没有关系或名字或任何东西。 我对VBA一无所知,所以我不确定这个代码的哪些部分要改变。

任何帮助是极大的赞赏!

编辑2:

报告来自我们的数据库:

在这里输入图像说明

我如何看待这份报告:

在这里输入图像说明