我有一个如下所示的Excel表格,分为两列:
Tom Alaska
Tom Hawaii
Tom New York
Tom California
Bob North Carolina
Bob New York
Bob Maine
Bob Alaska
Bob Wyoming
我需要以下格式:
Tom Alaska Hawaii New York California
Bob North Carolina New York Maine Alaska Wyoming
我已经搜索了网站和本网站,但老实说,我不知道如何提出这个问题。很抱歉,如果这看起来很简单,我已尝试过数据透视表,但无法按照上述格式获取。我已经在列中搜索了数据库行,但这只是让我获得了有关转置行和列的提示,而这并不是我需要的。
任何帮助都将不胜感激。
答案 0 :(得分:1)
这是一个VBA子程序,可以为您完成此任务。我评论了它的鼻涕,所以你可以理解它并根据需要改变一些东西:
Sub transpoooooooooOOOOooose()
Dim rngCell As Range 'variable to hold which cell we are on
Dim intCol As Integer 'variable to hold the column we are writing to
Dim intRow As Integer 'variable to hold the row we are writing to.
Dim strGuysName As String 'variable to hold the name of the dude
'first we will write to column 2 (column 1 will contain the name of the guy)
intCol = 2
'and row 0 (it will be popped up to row 1 in the first iteration
intRow = 0
'Those will be increased as we iterate below
'iterate through every filled out cell in column A
For Each rngCell In Sheet1.Range("A:A")
If rngCell.Value = "" Then Exit Sub 'we hit the bottom of the list, exit
'If this is a new dude, then increase intRow
' and capture the name
' and send intCol back to 2
If rngCell.Value <> strGuysName Then
intRow = intRow + 1 'see, we popped it up one.
strGuysName = rngCell.Value
intCol = 2
End If
'Now... the meat and potatoes
Sheet2.Cells(intRow, 1).Value = strGuysName 'write out the guys name
Sheet2.Cells(intRow, intCol).Value = rngCell.Offset(, 1).Value 'write out the city which is one column over
'increase the intCol by 1
intCol = intCol + 1
Next
End Sub
你也可以用前端excel的东西来做这件事。
首先,从col A获取一个独特的花花公子名单,然后将其粘贴在新纸张中(sheet2)
然后,在Sheet2!B1
(在汤姆旁边)使用:
=IF(INDEX(Sheet1!$A:$A, MATCH($A1,Sheet1!$A:$A, 0) + COLUMN() - 2)=$A1, INDEX(Sheet1!$B:$B, MATCH($A1,Sheet1!$A:$A, 0) + COLUMN() - 2), "")
那只野兽会找到汤姆&#34;在Sheet1(您的原始列表)中,返回找到的行。然后它会减少等于该公式在-2的列的行数(因为我们从B开始)。所以B列版本会检查第一行&#34; Tom&#34;找到,然后C列版本在此之后找到一行,而D列在此之后找到一行。如果该单元格的任何行数下降是&#34; Tom&#34;仍然,然后做同样的逻辑,但抓住B中的任何东西。
答案 1 :(得分:0)
非常感谢大家,我将尝试各自的建议。我继续浏览这个网站,我确实发现了一个类似的问题,他们使用Excel公式来做到这一点:
Combining duplicate entries with unique data in Excel
基本上第三列会将B列中的值合并为逗号分隔值,第四列将用于唯一标识A列中重复项的最后一行,然后我想我可以过滤掉然后使用逗号分隔符将第三列拆分为单独的列。
我认为这个解决方案可行,但我也会尝试其他建议。我再次感激这一点!
谢谢, 汤姆